Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy-使用不同的过滤器添加或设置条件_Python_Sqlalchemy - Fatal编程技术网

Python SQLAlchemy-使用不同的过滤器添加或设置条件

Python SQLAlchemy-使用不同的过滤器添加或设置条件,python,sqlalchemy,Python,Sqlalchemy,对于SQL语句,我只想在输入变量不是None时执行OR筛选 例如 但这是不可能的。第二个查询变成了AND语句 我不想这样做,因为我不想比较输入变量是否为null或空字符串 query = query.filter(or_(Table.field1 == var_1, Table.field2 == var_2)) 如何解决此问题?您可以动态构造“或”部分: 还请注意,def在Python中是一个保留字,请考虑重命名此变量。您可以动态构造“或”部分: 还要注意,def在Python中是一个保留字

对于SQL语句,我只想在输入变量不是None时执行OR筛选

例如

但这是不可能的。第二个查询变成了AND语句

我不想这样做,因为我不想比较输入变量是否为null或空字符串

query = query.filter(or_(Table.field1 == var_1, Table.field2 == var_2))

如何解决此问题?

您可以动态构造“或”部分:


还请注意,
def
在Python中是一个保留字,请考虑重命名此变量。

您可以动态构造“或”部分:


还要注意,
def
在Python中是一个保留字,请考虑重命名此变量。

啊,很好,很方便,因为
可以正确处理单个过滤器元素啊,很好,很方便,
可以正确处理单个过滤器元素
query = query.filter(or_(Table.field1 == var_1, Table.field2 == var_2))
query = session.query(Table)

conditions = []
if abc:
    conditions.append(Table.field1 == abc)
if def:
    conditions.append(Table.field2 == def)

query = query.filter(or_(*conditions))