Flask SqlAlchemy如何使用** kwargs和列表达式调用filter_by

时间:2017-03-21 15:09:28

标签: python flask flask-sqlalchemy flask-wtforms

我正在尝试动态过滤查询到我的数据库,我使用

List = mytable.query.filter_by(**kwargs).order_by(desc(inscrits.id)).all()
列的

是地址,我想使用表达式Like%partof address%

过滤该地址

所以我做的就是这个

        if (request.form.get('Address')):
            kwargs['Address'] = 'Address.Lik(%'+request.form.get('Address')+'%)'

它没有按预期工作,如果可能的话我怎么能这样做?

由于

1 个答案:

答案 0 :(得分:1)

您需要查询filter方法。它接收SQLAlchemy条件表达式列表。您的示例将如下所示:

args = []
if (request.form.get('Address')):
    args.append(mytable.address.like('%%%s%%' % request.form.get('Address')))
# Here will be another possible arguments
items = mytable.query.filter(*args).order_by(desc(inscrits.id)).all()