我有一个接收可选参数的函数。 我正在查询此函数中的数据库表。
我想要的是:
如果指定了可选参数,我想在我的数据库查询中添加另一个.filter()。
我的查询行已经很长了所以我不想做If .. else ..我在其中重复整个查询两次。
这样做的方法是什么?
以下是我的查询示例,如果指定了my_val,我需要添加另一个过滤行。
def my_def (my_val):
query = Session.query(Table1, Table2).\
filter(Table1.c1.in_(some_val)).\
filter(Table1.c2 == 113).\
filter(Table2.c3 == val1).\
filter(Table1.c4 == val2).\
filter(Table2.c5 == val5).\
all()
答案 0 :(得分:3)
您可以等待在查询集上调用.all()方法,如下所示:
def my_def (my_val=my_val):
query = Session.query(Table1, Table2).\
filter(Table1.c1.in_(some_val)).\
filter(Table1.c2 == 113).\
filter(Table2.c3 == val1).\
filter(Table1.c4 == val2).\
filter(Table2.c5 == val5)
if my_val:
query = query.filter(Table1.c6 == my_val)
return query.all()