带有SQLAlchemy查询的可选参数的Python定义

时间:2012-10-17 17:18:51

标签: python python-2.7 sqlalchemy

我有一个接收可选参数的函数。 我正在查询此函数中的数据库表。

我想要的是:

如果指定了可选参数,我想在我的数据库查询中添加另一个.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()

1 个答案:

答案 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()