2017-01-20 166 views
-4

在文檔,peeweesuggests運行SELECT查詢,像這樣:爲什麼在需要之前選擇?

User.select().where(User.active == True) 

爲什麼不User.where(User.active == True)?這個設計決定的邏輯是什麼?

+0

'select'是不是唯一的查詢,所以你需要指定它是一個'select'查詢。 – 4castle

+0

@ 4castle你似乎在回答'爲什麼選擇後必要的地方'這個問題,這不是我所要求的。 – Superbest

+0

我想我正在回答你的問題,「爲什麼在'where'之前需要'select'」。 – 4castle

回答

1

對於初學者,select()是爲了標記你正在做一個SQL SELECT。 上有型號其他可用方法的對象,如:

User.update() 
User.delete() 

其映射到相應的SQL

UPDATE 
DELETE 

另外,如果你的問題是使用select()中使用空的,它並不總是使用像那樣。 事實上,當你這樣做:

User.select().where(User.active == True) 

你實際上是這樣做的:

User.select(User).where(User.active == True) 

它只是因爲你從一個表中選擇,peewee已經假定你可能想選擇來自用戶的字段,並允許您省略它。

在更復雜的查詢,比如讓我們說你有沒有和可能的用戶類型的列表表用戶類型,它看起來是這樣的:

User.select(User, UserType).join(UserType).where(User.active == True) 

的參數傳遞給選擇()是一樣的你放在SQL SELECT之前。它們是您希望查詢返回的字段。

User.select(User.name).where(User.active == True) 

應該映射到

SELECT name FROM user WHERE active == true 
相關問題