概述
l = [
(100,230),(10,12),(7,1320),...
]
我想在sqlAlchemy中生成一个查询,我的表的值字段在100,230或10,12或7,1320之间,依此类推.
我的表看起来像这样:
id | value
----|------
1 | 120
2 | 2
3 | 9
4 | 1245
5 | 4512
在这种情况下,我想要这些ID:1,3,4.
我做了类似的事情,但我不能做或部分所以它只是过滤符合所有标准的行
q = session.query(Table.value)
for f in l:
q = q.filter((Table.value.between(f[0],f[1])))
我正在使用python3.6.
from sqlalchemy import or_
...
q = session.query(Table.id)
q = q.filter(or_(Table.value.between(100,Table.value.between(10,12)))
根据documentation,or_实际上接收到可变数量的子句,因此您可以使用列表推导解包技术将过滤器边界传递给它,如下所示:
q = q.filter(or_(*[Table.value.between(left,right) for left,right in l]))
*是解包运算符,它将从列表或元组中解析出参数,并将它们作为单独的位置参数传递给函数调用.
总结
以上是编程之家为你收集整理的python – 在sqlalchemy中过滤或多个全部内容,希望文章能够帮你解决python – 在sqlalchemy中过滤或多个所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧