如何使用 ((条件1 AND 条件2) OR (条件2 AND 条件3)) 构造sqlalchemy
query.filter(a == 'a', b =='b').filter(a == 'a2', b == 'b2')
将创建一个本质上为 (条件 1 AND 条件 2) AND (条件 3 AND 条件 4) 的过滤器。
相反,我希望它是(条件1和条件2)或(条件3和条件4)。我还想潜在地链接可变数量的这些外部 OR。
这在 SQLAlchemy 中可能吗?
ibeautiful
浏览 76回答 1
1回答
有只小跳蛙
它有助于像搭积木一样审视你的条件。首先,将最小的放在一起,即两个ANDs:and_(a == 'a', b == 'b'),and_(a == 'a2', b == 'b2')然后你可以用 OR 连接它们:query.filter( or_( and_(a == 'a', b == 'b'), and_(a == 'a2', b == 'b2') ))或者,如果您喜欢二元运算符,则以下内容是等效的:query.filter( (a == 'a' & b == 'b') | (a == 'a2' & b == 'b2'))