如何使用 ((条件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'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python