Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何处理多个过滤器_Python_Flask Sqlalchemy - Fatal编程技术网

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