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() # 所有操作永久保存到数据库

相关推荐
笑洋仟14 分钟前
Linux StorCLI工具安装和使用
linux·数据库·redis
Edward.W16 分钟前
Python实现人物剪影转ASCII艺术生成器
开发语言·python
天天进步201520 分钟前
Python全栈项目--校园智能停车管理系统
开发语言·python
盼哥PyAI实验室28 分钟前
我用 Coze + Python,从 0 搭了一个“能真正用”的 AI 律师函系统
开发语言·人工智能·python
麦聪聊数据29 分钟前
数据服务化(生产者篇):如何通过 QuickAPI 实现 SQL 逻辑的安全封装与发布?
数据库·sql·安全
阿部多瑞 ABU1 小时前
`chenmo` —— 可编程元叙事引擎 V2
python·ai·ai写作
amao99881 小时前
数据库原理与技术 - 3-5 SQL查询训练(习题)
数据库·sql
程序员Null的自我修养2 小时前
全面整理Redis过期删除与内存淘汰策略底层原理机制
数据库·redis
vb2008112 小时前
基于AMQP协议模拟MQTT的发布 / 订阅主题功能
python·rabbitmq
ZhuNian的学习乐园2 小时前
LLM对齐核心:RLHF 从基础到实践全解析
人工智能·python·算法