为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 ((条件1 AND 条件2) OR (条件2 AND 条件3)) 构造sqlalchemy

如何使用 ((条件1 AND 条件2) OR (条件2 AND 条件3)) 构造sqlalchemy

ibeautiful 2024-01-16 15:37:48
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')

)


查看完整回答
反对 回复 2024-01-16
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信