在文档中,peewee
suggests运行如下所示的选择查询:
User.select().where(User.active == True)
为什么不只是User.where(User.active == True)
?这个设计决定的逻辑是什么?
答案 0 :(得分:1)
首先,select()假设您正在进行SQL SELECT。 Model对象上还有其他可用的方法,如:
User.update()
User.delete()
映射到相应的SQL
UPDATE
DELETE
另外,如果你的问题是使用空的select(),它并不总是这样使用。 事实上,当你这样做时:
User.select().where(User.active == True)
你实际上在做:
User.select(User).where(User.active == True)
只是因为你从一张桌子中选择,所以peewee已经假设你可能想要从用户中选择字段并允许你省略它。
在更复杂的查询上,比如假设你有一个表UserType,其中包含可能的用户类型列表,它看起来像:
User.select(User, UserType).join(UserType).where(User.active == True)
传递给select()的参数与放在SQL SELECT前面的参数相同。它们是您希望查询返回的字段。
User.select(User.name).where(User.active == True)
应该映射到
SELECT name FROM user WHERE active == true