代码编织梦想

前言

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

filter()和filter_by() 的使用

SQLAlchemy 使用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()

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

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

等价于filter查询

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

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

多个条件查询

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

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

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

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

参考教程https://blog.csdn.net/lilygg/article/details/115006334

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_27371025/article/details/127157535

sqlalchemy多条件查询_jan2022的博客-爱代码爱编程_sqlalchemy多条件查询

def queryFilter(self,start_time,end_time,cboPayMethod,cboPayStatus,cboCashier): session = self.sesst

flask - bug - flask-sqlalchemy - sqlalchemy.orm.exc.detachedinstanceerror_lsyhhhhh的博客-爱代码爱编程_flasksqlalchemy scopefunc

目录 错误展示 代码展示 产生原因 解决方式 错误展示 flask - sqlalchemy - 官方解释文档 代码展示   产生原因 每次仅使用一个session,commit会将session内所有对象进行提交并删除,则后续session内无对象,需要手动add。 每次调用db.sessi

Flask-SQLAlchemy 条件查询-爱代码爱编程

根据一些条件的集合获取过滤后的数据。 要得到满足一系列等式条件的数据列表,则我们可以使用 query.filter_by 过滤器。 query.filter 接收关键字参数,并把接收到的参数作为我们想要在数据库里查询的字段名值对。比如,要找到用户名为admin 的用户列表,则可以这样: >>> users = User.query.

Flask-- (七) Flask-SQLAlchemy分页-爱代码爱编程

1、Flask-SQLAlchemy分页 随着项目运行的时间,数据会逐渐增多,为了更好的展示数据,从而有了分页这个需求。 Flask-SQLAlchemy分页,包装了分页的功能对象。 paginate(page=None, per_page=None, error_out=True, max_per_page=None) 参数描述page指定页码,

flask sqlalchemy查询多个不确定条件-爱代码爱编程

如下图: 用户手机号,策略类型等等都是可选,有可能只筛选一个或多个条件,这时候是不能用枚举法去写代码的,这样太多了。 然后开始找答案,有人是这样说的:链接 然后照着做了, 然后就是在filter_by的时候把引号去掉 然后,报错了。。如果是直接写进去就不会报错,也就是直接.filter_by(phone=13012345678,api_type=4001)

flask-17 flask-sqlalchemy查询-爱代码爱编程

查询记录 那么我们怎么从数据库中查询数据?为此,Flask-SQLAlchemy 在您的 Model 类上提供了 query 属性。当您访问它时,您会得到一个新的所有记录的查询对象。在使用 all() 或者 first() 发起查询之前可以使用方法 filter() 来过滤记录。如果您想要用主键查询的话,也可以使用 get()。 一、查询 示例

flask 学习-12.flask-sqlalchemy 连接 mysql 数据库_上海-悠悠的博客-爱代码爱编程

前言 SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面。 Flask-SQLAlchemy

flask 学习-13.flask-sqlalchemy 新建模型和字段_上海-悠悠的博客-爱代码爱编程

前言 Flask-SQLAlchemy是一个Flask扩展,简化了在Flask应用中使用SQLAlchemy的操作。 定义模型 在python代码中创建一个类,每个类对应了一个数据库中的一张表,类的数据属性对应了表中的

flask 学习-19.配置管理flask_sqlalchemy 和 flask_migrate_上海-悠悠的博客-爱代码爱编程

前言 前面讲了项目中使用config.py 可以管理开发、生产、测试等环境的配置,这篇继续学习在项目中添加flask_sqlalchemy 和 flask_migrate 的配置 环境准备 先pip安装flask_sq