0

我想要以下内容:

q = db.session.query(db.models.Something).filter(a==a).filter(b==b).or().filter(c==c).filter(foo==bar)

这将意味着 a=a 和 b=b 或 c=c 和 d=d。

我强烈希望避免在过滤器调用本身中应用它。

4

1 回答 1

0

您需要使用or_()andand_()函数:

from sqlalchemy.sql import or_, and_

q = db.session.query(db.models.Something).filter(
    or_(
        and_(a==a, b==b),
        and_(c==c, foo==bar)
    ))

或者您可以使用&|运算符:

q = db.session.query(db.models.Something).filter(
    (a==a) & (b==b) | (c==c) & (foo==bar))

请参阅连接通用过滤器操作

于 2013-03-27T20:32:53.553 回答