我有一个独立条款列表,如下所示:
'cls.status = :status_1 AND cls.password_valid = 0'
'cls.status = :status_1 AND cls.reason = :reason_1'
...
我想将它们添加到sqlalchemy中的where子句
使用query = query.filter(or_(*clauses))
告诉我,我应该将它们(在where子句中)读作:
WHERE ...
AND ((tbl1.status = :status_2 AND tbl1.password_valid = 0)
OR (tbl1.status = :status_3 AND tbl1.reason = :reason_1))
出于某种原因,当我向查询添加multipart子句时,它将它们视为单个部分,而我得到了这个:
WHERE ...
AND (tbl1.status = :status_2 AND tbl1.password_valid = 0
OR tbl1.status = :status_3 AND tbl1.reason = :reason_1)
这与我的期望并不相同。如何让它围绕正在进行OR的多部分子句引入parens?我找到的所有例子都是单个子句语句,因为它们可以正常工作
答案 0 :(得分:0)
使用or_
,您必须将内容包装在以逗号分隔的数据中。
query.filter(or_(
something == 'this', something == 'that'
)
)
如果要将子句与parens分开,可以使用备用按位运算符|
例如:
query.filter( (something == 'this') |
(something == 'that'))