对于SQL语句,我只想在输入变量不为None时做OR过滤。
例如
# input variable
var_1 = "apple"
var_2 = "pear"
query = session.query(Table)
if var_1:
query = query.filter(or_(Table.field1 == var_1))
if var_2:
query = query.filter(or_(Table.field2 == var_2))
但这是不可能的。第二个查询改为 AND 语句。
我不想这样做,因为我不想比较输入变量是否为 null 或空字符串。
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))
另请注意,def
是 Python 中的保留字,请考虑重命名此变量。
关于python - SQLAlchemy - 使用不同的过滤器添加 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838302/