定制小程序开发费用Flask 学习-85.Flask-SQLAlchemy 多个不确定条件查询

前言

定制小程序开发费用在后台管理数据的时候,定制小程序开发费用经常会有多个条件查询,查询参数可以是一个也可以是多个,如果没有查询参数就返回全部数据。

filter()和filter_by() 的使用

使用query查询的时,可以使用filter()和filter_by() 过滤条件。
filter_by() 参数直接用属性名,比较用一个=
filter() 参数 用类名.属性名,比较用 ==

主要区别

模块参数大于(>)和小于(<)and_、or_、like、in_
filter_by()直接用属性名,比较用=不支持不支持
filter()用类名.属性名,比较用==支持支持

filter_by() 只能筛选条件等于,不支持 大于 (>)和小于 (<)和 and_、or_查询

Students.query.filter_by(name='yoyo').all()
  • 1

如果需要满足多个条件,查询name名称等于’yoyo’, 并且年龄age等于20,中间用逗号隔开

Students.query.filter_by(name='yoyo', age=20).all()
  • 1

等价于filter查询

Students.query.filter(Students.name == 'yoyo').all()Students.query.filter(Students.name == 'yoyo', Students.age == 20).all()
  • 1
  • 2

filter() 除了可以支持判断等于,还可以支持 大于 (>)和小于 (<)和 and_、or_、like、in_查询

# 大于 >Students.query.filter(Students.age > 20).all()# 小于 <Students.query.filter(Students.age < 20).all()# and_ 查询Students.query.filter(and_(Students.name == 'yoyo', Students.age == 20)).all()# or_查询Students.query.filter(or_(Students.id >= 1, Students.name == 'yoyo')).all()# like 模糊匹配Students.query.filter(Students.name.like('%yoyo%')).all()# _in包含Students.query.filter(Students.name.in_(['yoyo', 'yoyo1'])).all()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

多个条件查询

多个条件查询,并且条件的个数不确定,用filter_by() 只能判断相等和不相等,无法模糊匹配.
如果用filter_by()可以把查询的条件写的一个字典,为None的数据先从字典剔除,如下示例

query_dict = {    "name": "zhangsan",    "age": 22}# 剔除query_dict参数为空的数据后Students.query.filter_by(**query_dict)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用filter() 查询功能更灵活,所以大部分会使用filter() 结合 _or

students_filter = Students.query.filter(        or_(Students.name == name, name == None),        or_(Students.tel == tel, tel == None),        or_(Students.email == email, email == None),    ).all()
  • 1
  • 2
  • 3
  • 4
  • 5

get请求query传参/api/student?name=yoyo&tel=12222

参考教程

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发