gpt4 book ai didi

SQLAlchemy:使用多个filter()-Calls产生OR-子句

转载 作者:行者123 更新时间:2023-12-01 23:13:26 24 4
gpt4 key购买 nike

我是sqlalchemy的新手,可以使用一些帮助。
我正在尝试编写一个小型应用程序,必须动态更改选择语句。所以我做s = select([files]),然后我通过s = s.where(files.c.createtime.between(val1, val2))添加过滤器。
这很好用,但仅在与连接时起作用。
所以,当我想让所有条目都带有createtime (between 1.1.2009 and 1.2.2009) OR createtime == 5.2.2009时,我遇到了一个问题,就是我不知道如何通过不同的过滤器调用来实现这一点。由于程序逻辑,无法使用s= s.where(_or(files.c.createtime.between(val1, val2), files.c.createtime == DateTime('2009-02-01')))
提前致谢,
克里斯托夫

最佳答案

您可以从列表动态构建or子句:

clauses = []
if cond1:
clauses.append(files.c.createtime.between(val1, val2))
if cond2:
clauses.append(files.c.createtime == DateTime('2009-02-01'))
if clauses:
s = s.where(or_(*clauses))

关于SQLAlchemy:使用多个filter()-Calls产生OR-子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3618051/

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