首页 > 数据库 >Flask 学习-85.Flask-SQLAlchemy 多个不确定条件查询

Flask 学习-85.Flask-SQLAlchemy 多个不确定条件查询

时间:2022-10-03 22:44:58浏览次数:86  
标签:SQLAlchemy name Flask 查询 filter Students yoyo query 85

前言

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

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

标签:SQLAlchemy,name,Flask,查询,filter,Students,yoyo,query,85
From: https://www.cnblogs.com/yoyoketang/p/16751396.html

相关文章

  • flask注册功能
     首先创建一个新项目  可以正常运行与访问  创建配置文件并添加配置。  将这里拆分到不同的文件中,让启动文件更加简洁。  创建一个apps包,导入配置模......
  • 使用flask入门一个测试平台01-模型设计
    前言​ 在去年的年中,我一时冲动写了一个基于flask开发的测试平台,然后把服务托管在了腾讯云上,本来想是写文章分享的怎么开发的,但是一直没有写。如今一年已经过去了,服务器也......
  • Flask 学习-84.Flask-SQLAlchemy 一对多关系级联删除
    前言一对多关系,当删除主表数据的时候,关联表数据一起删除掉一对多模型设计classPerson(db.Model):id=db.Column(db.Integer,primary_key=True)name=db.......
  • 如何在阿里云服务器搭建flask
    下载flask不用我多说了,pip3installflask 今天在阿里云的服务器上测试一个Flask程序,命名指定了ip:0.0.0.0,port:5000,但是外网IP确怎么也访问不了网页 上网上好个查,发......
  • 洛谷 P8557 炼金术 题解
    题目大意给定\(n\)种金属,放进\(k\)个熔炉,要求最终每种金属都要能从熔炉里拿出来,求熔炉炼金的方案数对\(998244353\)取模。分析从金属角度考虑。不难发现对于每......
  • 「浙江理工大学ACM入队200题系列」问题 L: 零基础学C/C++85——完美数
    本题是浙江理工大学ACM入队200题第八套中的L题我们先来看一下这题的题面.题面题目描述任何一个自然数的约数中都有1和它本身,我们把小于它本身的因数叫做这个自然数的......
  • 轻量级Web框架Flask——Web表单
    安装Flask-WTF及其依赖可使用pip安装pipinstallflask_wtf配置要求应用配置一个密钥。密钥是一个由随机字符构成的唯一字符串,通过加密或签名以不同的方式提升应用的......
  • flask获取硬件资源信息
    1.获取gpu信息[root@ks-devopspython]#catgpu_info.pyimportpynvmlUNIT=1024*1024defGpuInfo():pynvml.nvmlInit()#初始化gpuDeriveInfo=py......
  • flask后端简单demo
    1、flaskdemofromflaskimportFlask,Blueprint,requestfromflask_sqlalchemyimportSQLAlchemyapp=Flask(__name__)#数据库app.config['SQLALCHEMY_TRACK......
  • flask基础知识
    1、flask微服务含义“微”并不代表整个应用只能塞在一个Python文件内,当然塞在单一文件内也没有问题。“微”也不代表Flask功能不强。微框架中的“微”字表示Flask......