query.filter(a == 'a', b =='b').filter(a == 'a2', b == 'b2')将创建一个本质上为 (条件 1 AND 条件 2) AND (条件 3 AND 条件 4) 的过滤器。相反,我希望它是(条件1和条件2)或(条件3和条件4)。我还想潜在地链接可变数量的这些外部 OR。这在 SQLAlchemy 中可能吗?
1 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
它有助于像搭积木一样审视你的条件。首先,将最小的放在一起,即两个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')
)
添加回答
举报
0/150
提交
取消