有没有办法filter在SQL Alchemy ORM中有条件地为查询添加参数?
例如,想象一下,我有以下几点:
q = session.query(X)
if a:
q.filter(X.y == 'a')
elif b:
q.filter(X.y == 'a', X.z == 'b')
elif c:
q.filter(X.y == 'a', X.p == 'd')
Run Code Online (Sandbox Code Playgroud)
有没有办法说只需添加
X.z == 'b' 如果 b
无需(X.y == 'a')在每个过滤器中读取.
好像我能做到
q.filter(X.y == 'a').filter(X.y == 'b')
但这会更改正在执行的查询.
sat*_*oru 12
尝试将查询收集到列表中,然后*在调用时使用运算符filter:
queries = [X.y == 'a']
if b:
queries.append(X.z == 'b')
q.filter(*queries)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我不明白为什么你认为链接两个filter会改变你的查询,它会X.y = a AND X.z = b像你使用时那样对应filter(X.y == 'a', X.z == 'b').
| 归档时间: |
|
| 查看次数: |
4461 次 |
| 最近记录: |