python - SQLAlchemy - 使用不同的过滤器添加 OR 条件

标签 python sqlalchemy

对于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/

相关文章:

python - 如何将数据追加到现有数据库,而不影响已存在的数据?

python - 每隔一段时间从 Pandas 数据框中选择值

Google Cloud SQL 上的 Python sqlalchemy

python - 如何使用 sqlalchemy IntegrityError 查找有问题的属性

pandas - 如何使用元组作为查询参数之一将 pandas read_sql 从 psycopg2 迁移到 sqlalchemy

python - 具有附加字段的 SQLAlchemy 多对多辅助表

python - 给定指定顺序,获取列中所有重复元素的索引

python - 检索记录 MySql 数据库 PyDAL

python - 如何在pandas中将一列数据框拆分为多列?

Python SQLAlchemy 数据库迁移