例如,以下两者之间有区别吗?
session = Session() # Session is a session maker
try:
# do some work
session.commit()
except:
session.rollback()
finally:
session.close()
and
session = Session()
try:
# do some work
session.commit()
finally:
session.close()
后者是我以前所做的,因为我假设在提交之前关闭会话(如果发生错误)与回滚具有相同的效果。但我看到了第一个表格here http://docs.sqlalchemy.org/en/latest/orm/session_basics.html.
Closing http://docs.sqlalchemy.org/en/latest/orm/session_basics.html#closing会话将隐式回滚当前事务状态:
The close()
方法问题aexpunge_all()
, and releases http://docs.sqlalchemy.org/en/latest/glossary.html#term-releases任何事务/连接资源。当连接返回到连接池时,事务状态也会回滚。
但我认为第一种形式仍然更好,因为显式优于隐式 https://www.python.org/dev/peps/pep-0020/。 SQLAlchemy 的作者也似乎反映了这种情绪 https://stackoverflow.com/a/17013336/2681632.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)