烧瓶SqlAlChemy如何使用**粗略和列状表达式调用过滤_BY
问题描述
我正在尝试将查询动态过滤发送到我的数据库,我使用
List = mytable.query.filter_by(**kwargs).order_by(desc(inscrits.id)).all()
其中一列是地址,我想在该地址上使用类似%partof Address%的表达式
所以我做的是
if (request.form.get('Address')):
kwargs['Address'] = 'Address.Lik(%'+request.form.get('Address')+'%)'
它没有按预期工作,如果可能,我如何做到这一点?
谢谢
解决方案
需要查询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()
相关文章