gpt4 book ai didi

python - 在sqlalchemy中过滤或过滤多个

转载 作者:太空狗 更新时间:2023-10-30 01:11:26 25 4
gpt4 key购买 nike

我有一个这样的元组列表:

l = [
(100, 230),
(10, 12),
(7,1320),
...
]

我想在 SQLAlchemy 中生成一个查询,我的表的 value 字段在 100 , 23010, 127, 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

最佳答案

SQLAlchemy 提供or_ 来组合过滤子句:

from sqlalchemy import or_
...
q = session.query(Table.id)
q = q.filter(or_(Table.value.between(100, 230), Table.value.between(10, 12)))

根据documentation , or_ 实际上接收可变数量的子句,因此您可以使用列表理解 + 解包技术将过滤器边界传递给它,如下所示:

q = q.filter(or_(*[Table.value.between(left, right) for left, right in l]))

* 是解包运算符,它将参数从列表或元组中解包出来,并将它们作为单独的位置参数传递给函数调用。

关于python - 在sqlalchemy中过滤或过滤多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50304880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com