首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >session.commit()和session.flush()有什么区别?

session.commit()和session.flush()有什么区别?
EN

Stack Overflow用户
提问于 2011-09-19 21:12:01
回答 2查看 12.6K关注 0票数 21

有人知道SQLAlchemy中的session.commit()session.flush()的主要区别是什么吗?

EN

回答 2

Stack Overflow用户

发布于 2011-09-20 00:15:36

我所知道的解释这些功能的最简单方法是使用echo=True向您展示

代码语言:javascript
运行
复制
>>> session.flush()
BEGIN (implicit)
INSERT INTO users (username, password) VALUES (?, ?)
('alice', None)
>>> session.commit()
COMMIT
>>> 

flush()使数据被发送到数据库。commit()产生一个COMMIT,它告诉数据库保留刚刚发送的数据。正如其他人所说,如果需要的话,commit()也会导致flush()的发生。

票数 12
EN

Stack Overflow用户

发布于 2017-02-10 17:12:57

尽管上面的答案是正确的,但是flush最有用的功能是将对数据库中的表所做的更改应用回代码中的相关对象。下面是一个示例,假设您注册了一个用户,并希望返回其id,

代码语言:javascript
运行
复制
u = User(name,address,phone) #id is autogenerated 
session.add(u)
session.commit() #calls flush beforehand, but we need it after the commit
session.flush() #updates the objects of the session 
print(u.id) #id field of the User object updated after the flush

您无需再次查询即可获得他的id!!希望这能有所帮助

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7471495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档