带有可选参数的Python定义,用于使用SQLAlchemy进行查询

带有可选参数的Python定义,用于使用SQLAlchemy进行查询,python,python-2.7,sqlalchemy,Python,Python 2.7,Sqlalchemy,我有一个函数,它接收一个可选参数。 我正在查询此函数中的数据库表 我想要的是: 如果指定了可选参数,我想向数据库查询中添加另一个.filter() 我的查询行已经很长了,所以我不想做如果。。其他的在其中,我将整个查询重复两次 这样做的方法是什么 下面是我的查询示例,如果指定了my_val,我需要添加另一个筛选行 def my_def (my_val): query = Session.query(Table1, Table2).\ filter(Table1.c1

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

我想要的是:

如果指定了可选参数,我想向数据库查询中添加另一个.filter()

我的查询行已经很长了,所以我不想做如果。。其他的在其中,我将整个查询重复两次

这样做的方法是什么

下面是我的查询示例,如果指定了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()

您可以等待调用查询集上的.all()方法,如下所示:


定义我的定义(我的值=我的值):
query=Session.query(表1、表2)\
过滤器(表1.c1.in(某些值))\
过滤器(表1.c2==113)\
过滤器(表2.c3==val1)\
过滤器(表1.c4==val2)\
过滤器(表2.c5==val5)
如果我的妻子:
query=query.filter(表1.c6==my_val)
返回query.all()


您可以等待调用查询集上的.all()方法,如下所示:


定义我的定义(我的值=我的值):
query=Session.query(表1、表2)\
过滤器(表1.c1.in(某些值))\
过滤器(表1.c2==113)\
过滤器(表2.c3==val1)\
过滤器(表1.c4==val2)\
过滤器(表2.c5==val5)
如果我的妻子:
query=query.filter(表1.c6==my_val)
返回query.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()