Python中 session flush 和 commit 的区别

flush():将挂起的操作发送到数据库,但不提交事务

user = User(name='John', age=30)

session.add(user)

session.flush() # 生成SQL并发送到数据库,分配ID,但未提交

print(user.id) # 此时可以获取到ID(如果自增)

可以继续操作

session.add(Email(address='john@example.com', user_id=user.id))

commit():提交整个事务

session.commit() # 所有操作永久保存到数据库

相关推荐
IvorySQL6 分钟前
PG 日报|修复高 IO 并发场景,解决预读机制耗尽本地缓冲区缺陷
数据库·人工智能·sql·postgresql·区块链
TiDB 社区干货传送门9 分钟前
TiDB 8.5.7 发版|六项实用功能上线
数据库·mysql·tidb
在繁华处17 分钟前
MySQL 学习笔记 01:从概念到约束,搭好库表骨架
数据库·oracle
再渊18 分钟前
基因归因到底怎么计算的?
python·深度学习·机器学习
E_ICEBLUE27 分钟前
Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分
python·excel
aiqianji39 分钟前
有哪些稳定的AI短篇小说写作软件可以推荐?
人工智能·python
三言老师1 小时前
CentOS7.9:Redis 数据持久化结构化实战教程
数据库·redis·缓存
鸽芷咕1 小时前
KingbaseES 优化器底层逻辑:等价变换如何改写 SQL,条件调度如何驱动运行时
数据库
Ulyanov1 小时前
Python雷达电子对抗仿真引擎(一):打破单体瓶颈,构建微服务与ECS架构的顶层设计
开发语言·python·微服务·云原生·架构·雷达电子对抗
Vect__1 小时前
MySQL 内连接和外连接:从匹配关系到业务查询
数据库·mysql