在 SQLAlchemy 中使用 OR

新手上路,请多包涵

我查看 了文档,但似乎无法找到如何在 SQLAlchemy 中执行 OR 查询。我只想做这个查询。

 SELECT address FROM addressbook WHERE city='boston' AND (lastname='bulger' OR firstname='whitey')

应该是这样的

addr = session.query(AddressBook).filter(City == "boston").filter(????)

原文由 JiminyCricket 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 477
2 个回答

教程

 from sqlalchemy import or_
filter(or_(User.name == 'ed', User.name == 'wendy'))

原文由 Bastien Léonard 发布,翻译遵循 CC BY-SA 3.0 许可协议

SQLAlchemy overloads the bitwise operators & , | and ~ so instead of the ugly and hard-to-read prefix syntax with or_() and and_() (如 Bastien 的回答)您可以使用这些运算符:

 .filter((AddressBook.lastname == 'bulger') | (AddressBook.firstname == 'whitey'))

请注意,由于按位运算符的优先级,括号 不是可选 的。

所以你的整个查询看起来像这样:

 addr = session.query(AddressBook) \
    .filter(AddressBook.city == "boston") \
    .filter((AddressBook.lastname == 'bulger') | (AddressBook.firstname == 'whitey'))

原文由 ThiefMaster 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏