【SQLAlChemy】filter过滤条件如何使用?

filter 过滤条件

生成 mock 数据

# 创建 session 对象
session = sessionmaker(bind=engine)()# 本地生成mock数据
for i in range(6):# 生成随机名字, 长度为4到7个字符name = ''.join(random.choice(string.ascii_letters) for _ in range(random.randint(4, 7)))# 生成随机年龄, 范围为20到40age = random.randint(20, 40)user = User(name=name, age=age)# print(user.name, user.age)session.add(user)session.commit()

数据库表数据:

equals ==

# ==
# user = session.query(User).filter(User.age == 21).all()
# print(user)
'''
输出结果:[<User(name=KOBND, age=21)>]
'''

not equals !=

# !=
users = session.query(User).filter(User.age != 40).all()
for user in users:print(user)'''
输出结果:
<User(name=ypb, age=18)>
<User(name=yxc, age=22)>
<User(name=wwQE, age=23)>
<User(name=nzUjld, age=36)>
<User(name=uzjcgd, age=38)>
<User(name=Kbvifw, age=27)>
<User(name=KOBND, age=21)>
'''

like & ilike

# like
users = session.query(User).filter(User.name.like('y%')).all()
for user in users:print(user)'''
输出结果:
<User(name=ypb, age=18)>
<User(name=yxc, age=22)>
'''# ilike (对大小写不敏感)
users = session.query(User).filter(User.name.ilike('y%')).all()
for user in users:print(user)
'''
输出结果:
<User(name=ypb, age=18)>
<User(name=yxc, age=22)>
'''

in

# in
users = session.query(User).filter(User.age.in_(range(18, 30))).all()
for user in users:print(user)
'''
输出结果:
<User(name=ypb, age=18)>
<User(name=yxc, age=22)>
<User(name=wwQE, age=23)>
<User(name=Kbvifw, age=27)>
<User(name=KOBND, age=21)>
'''

not in

# not in
# 第一种写法
users = session.query(User).filter(not_(User.age.in_(range(18, 30))))
# 第二种写法
users = session.query(User).filter(~(User.age.in_(range(18, 30))))
for user in users:print(user)
'''
输出结果:
<User(name=RPIaXC, age=40)>
<User(name=nzUjld, age=36)>
<User(name=uzjcgd, age=38)>
'''

is null

# is null
# 第一种写法
user = session.query(User).filter(User.age == None).all()
# 第二种写法
user = session.query(User).filter(User.age.is_(None)).all()
print(user)
'''
输出结果:[]
'''

is not null

# is not null
# 第一种写法
users = session.query(User).filter(User.name != None).all()
# 第二种写法
users = session.query(User).filter(User.name.isnot(None)).all()
for user in users:print(user)
'''
输出结果:
<User(name=ypb, age=18)>
<User(name=yxc, age=22)>
<User(name=wwQE, age=23)>
<User(name=RPIaXC, age=40)>
<User(name=nzUjld, age=36)>
<User(name=uzjcgd, age=38)>
<User(name=Kbvifw, age=27)>
<User(name=KOBND, age=21)>
'''

and

# and
# 第一种写法
user = session.query(User).filter(and_(User.name == 'ypb',User.age == 18)).first()
# 第二种写法
user = session.query(User).filter(User.name == 'ypb',User.age == 18).first()
# 第三种写法
user = session.query(User).filter(User.name == 'ypb').filter(User.age == 18).first()print(user)
'''
输出结果:<User(name=ypb, age=18)>
'''

or

# or
users = session.query(User).filter(or_(User.age <= 20, User.age >= 30)).all()
for user in users:print(user)
'''
输出结果:
<User(name=ypb, age=18)>
<User(name=RPIaXC, age=40)>
<User(name=nzUjld, age=36)>
<User(name=uzjcgd, age=38)>
'''

注意

在 SQL 中,NULL 值具有一些特殊的行为,这可能会影响到你的过滤条件。例如,使用 == 操作符比较一个字段和 NULL 值将不会返回任何结果,即使字段中确实有 NULL 值。在这种情况下,你应该使用 is NULL 或者 is not NULL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 请求头加header

Java 请求头加header 通常情况下&#xff0c;java的http请求接口可以无需加header&#xff0c;但也有的第三方接口强制要求将accesstoken放在请求头中&#xff0c;而不能作为普通参数传递&#xff0c;这样就需要在请求头中加header&#xff0c;这里写了几个http请求工具类的方法…

矩阵杯2024 Re wp 前两题

1. packpy UPX壳&#xff0c;但不能直接脱&#xff0c;应该是修改了头文件&#xff08;l_info) 改一下就能脱了 脱完是个elf文件 进IDA看一眼 明显的Py打包标志&#xff0c;用pyinstxtractor解包出来&#xff08;最好用对应的python3.8&#xff09; 可以得到packpy.pyc文件&a…

Prov-GigaPath:新型数字病理基础模型|顶刊精析·2024-06-10

小罗碎碎念 顶刊精析&#xff5c;2024-06-10 首先祝各位老师、师兄师姐、师弟师妹们端午节快乐&#xff01;&#xff01;小罗是社恐&#xff0c;所以就不一一发消息问候了&#xff0c;哈哈。 今天这篇推文是昨天下午写完的&#xff0c;想着时间有点晚了&#xff0c;所以就放到…

java发送http请求工具类-简单易懂

简介 在Java开发中&#xff0c;我们经常需要发送HTTP请求来获取数据或与外部系统进行交互。Hutool是一个Java工具类库&#xff0c;提供了丰富的工具方法&#xff0c;其中包括发送HTTP请求的工具类。使用Hutool发送HTTP请求非常简单&#xff0c;不仅可以发送GET和POST请求&#…

作业07 递推算法2

作业&#xff1a; #include <iostream> using namespace std; int main(){int a[110][110]{0},b[110][110]{0},n;cin>>n;for(int i1;i<n;i){for(int j1;j<i;j){cin>>a[i][j];}}for(int in-1;i>1;i--){for(int j1;j<i;j){a[i][j]a[i][j]max(a[i1]…

SpringBoot中实现一个通用Excel导出功能

SpringBoot中实现一个通用Excel导出功能 文章目录 SpringBoot中实现一个通用Excel导出功能这个导出功能的特色看效果代码解析1、依赖2、Excel 入参(ExcelExportRequest)3、Excel 出参(ExcelExportResponse)4、ExcelExportField5、ExcelExportUtils 工具类6、ExcelHead 头部…

0元白嫖阿里云4G内存云服务器——感谢伟大的CSDN和阿里云

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对博主首页也很感兴趣o (ˉ▽ˉ&#xff1b;) 学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程-CSDN博客 目录 1、学生认证领取300元优惠券 ​2、购买云服务器 1、学生认证领取…

深度学习500问——Chapter10:迁移学习(1)

文章目录 11.1 迁移学习基础知识 11.1.1 什么是迁移学习 11.1.2 为什么需要迁移学习 11.1.3 迁移学习的基本问题有哪些 11.1.4 迁移学习有哪些常用概念 11.1.5 迁移学习与传统机器学习有什么区别 11.1.6 迁移学习的核心及度量准则 11.1.7 迁移学习与其他概念的区别 11.1.8 什么…

【Python】高阶函数

高阶函数 高阶函数是接受另一个函数作为参数&#xff0c;并返回一个函数作为结果的函数。 这种类型的函数是函数式编程的核心&#xff0c;因为它们允许对行为进行抽象和复用&#xff0c;使得代码更加简洁和灵活。 def apply_function(func, value):return func(value)def sq…

MySQL 存储函数及调用

1.mysql 存储函数及调用 在MySQL中&#xff0c;存储函数&#xff08;Stored Function&#xff09;是一种在数据库中定义的特殊类型的函数&#xff0c;它可以从一个或多个参数返回一个值。存储函数在数据库层面上封装了复杂的SQL逻辑&#xff0c;使得在应用程序中调用时更加简单…

tcp协议中机制的总结

目录 总结 分析 三次握手 总结 分析 其中,序列号不止用来排序,还可以用在重传时去重 确认应答是机制中的核心 因为都需要依靠应答来拿到协议字段,从而判断是否触发机制 保证可靠性的策略也可以提高效率,比如: 流量控制,可以根据多个因素来动态调整数据发送量拥塞控制也是,让…

揭开FFT时域加窗的奥秘

FFT – Spectral Leakage 假设用于ADC输出数据分析的采样点数为N&#xff0c;而采样率为Fs&#xff0c;那我们就知道&#xff0c;这种情况下的FFT频谱分辨率为δf&#xff0c;那么δfFs/N。如果此时我们给ADC输入一个待测量的单频Fin&#xff0c;如果此时Fin除以δf不是整数&a…

Follow Carl To Grow|【LeetCode】235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点

【LeetCode】235. 二叉搜索树的最近公共祖先 题意&#xff1a;给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q…

翻译《The Old New Thing》- Why do messages posted by PostThreadMessage disappear?

Why do messages posted by PostThreadMessage disappear? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20090930-00/?p16553 Raymond Chen 2008年09月30日 为什么 PostThreadMessage 发布的信息会消失&#xff1f; 在显示用户界面的线…

mybatis-plus 多租户方案1使用和坑注意事项,方案是需要实现租户功能的表都增加租户id字段

1 前提springboot整合好 mybatis-plus (版本3.5.4) 需要实现多租户的表&#xff0c;添加修改对应字段和 pojo类 (表添加tenant_id字段&#xff0c;pojo添加tenantId属性) 2 配置文件更改&#xff0c;方便扩展 #多租户配置 tenant:enable: truecolumn: tenant_idignoreTable…

【Java】网制焦,实也难,0基础,学反射

【Java】网制焦&#xff0c;实也难&#xff0c;0基础&#xff0c;学反射 文章目录 【Java】网制焦&#xff0c;实也难&#xff0c;0基础&#xff0c;学反射反射的概述 获取Class对象的三种方式通过对象的getClass()方法通过类的静态属性class通过Class.forName()方法 通过反射获…

代码随想录算法训练营第三十三天|LeetCode1005 k次取反后最大化的数组和、LeetCode134 加油站

题1&#xff1a; 指路&#xff1a;1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 思路与代码&#xff1a; 题意清晰&#xff0c;需要注意的是需要把k次机会用完。数组中的数分为三种情况&#xff1a;正数&#xff0c;负数&#xff0c;0。要求数组…

《平凡的世界》读后感:走进平凡的世界

《平凡的世界》是一部充满人性光辉的小说&#xff0c;通过描写普通人的生活&#xff0c;展现了人生的苦乐交织。这篇读后感旨在通过秀、少平、金秀、兰香、秀莲、少安、孙玉厚、孙玉亭、顾养民、润生、润叶、向前、登云、晓霞、田福堂、田福军、张有智、苗凯、王满银、兰花等人…

算法 | 子集数排列树满m叉树二分搜索归并排序快速排序

子集树&#xff1a;O(2^n) 一个序列的所有子集为2^n&#xff0c;即可看成具有2^n个叶节点的满二叉树 int backtrack(int k) //k表示扩展结点在解空间树中所处的层次 {if(k>n) //n标识问题的规模output(x); //x是存放当前解的一维数组if(constraint(k)…

01—Linux网络设置

1.1查看及测试网络 1.1.1 查看网络配置 1.查看网络接口地址 主机的网络接口卡通常称为网络接口。在LInux操作系统中&#xff0c;使用ifconfig命令可以查看网络接口的地址配置信息。 &#xff08;1&#xff09;查看活动的网络接口设备 若采用mini版CenOS7安装的系统&#x…