Python 如何处理多个过滤器
我想知道如何处理多个过滤器?例如我们有Python 如何处理多个过滤器,python,flask-sqlalchemy,Python,Flask Sqlalchemy,我想知道如何处理多个过滤器?例如我们有 *table* class ExampleTable(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(90)) date = db.Column(db.DateTime) 我们得到的JSON数据是 { "title": "test", "date"
*table*
class ExampleTable(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(90))
date = db.Column(db.DateTime)
我们得到的JSON数据是
{
"title": "test",
"date": "2020-12-27"
}
为了执行过滤器查询,我做了以下工作
if title != '' and date != '':
data = [ example_json for example_json in ExampleTable.query.filter(ExampleTable.title.contains(json['title']).filter(ExampleTable.date.contains(json['date']).all() ]
elif title != '':
data = [ example_json for example_json in ExampleTable.query.filter(ExampleTable.title.contains(json['title']).all() ]
else:
data = [ example_json for example_json in ExampleTable.query.all() ]
return data
这只是一个例子,但你可以看到它是多么重复,如果我们有5个或10个过滤器,分别检查每一个,对这样简单的任务将花费数小时
在SQL中处理多个过滤器查询的正确方法是什么?过滤器方法返回
查询
实例,因此您可以重复添加过滤器,如下所示:
query=ExampleTable.query()
如果标题为:
query=query.filter(ExampleTable.title.contains(json['title']))
如果日期:
query=query.filter(ExampleTable.title.contains(json['date']))
结果=query.all()