lfk*_*lfk 3 python sql transactions sqlalchemy
例如,以下两个之间有区别吗?
session = Session() # Session is a session maker
try:
# do some work
session.commit()
except:
session.rollback()
finally:
session.close()
Run Code Online (Sandbox Code Playgroud)
和
session = Session()
try:
# do some work
session.commit()
finally:
session.close()
Run Code Online (Sandbox Code Playgroud)
后者是我过去的工作,因为我假设在提交之前关闭会话(如果发生错误)与回滚具有相同的效果。但是我在这里看到了第一种形式。
关闭会话将隐式回滚当前事务状态:
该
close()方法发出expunge_all(),并释放所有事务/连接资源。当连接返回到连接池时,事务状态也会回滚。
但是我认为第一种形式仍然更好,因为显式要比隐式好。SQLAlchemy的作者似乎也反映了这种观点。
| 归档时间: |
|
| 查看次数: |
958 次 |
| 最近记录: |