【发布时间】:2014-12-23 21:20:10
【问题描述】:
我想做一个原子事务,我的数据库是 PostgreSQL。
到目前为止,我是这样进行交易的:
transaction.set_autocommit(False)
try:
do_stuff()
transaction.commit()
except:
transaction.rollback()
raise
finally:
transaction.set_autocommit(True)
医生说我可以这样做:
with transaction.atomic():
do_stuff()
两个代码一样吗?
我的settings.py 中有一个连接池CONN_MAX_AGE=60。
以下情况会发生什么:
- 第一个请求将自动提交设置为
False - 第二个请求进行数据库更新
- 第一个请求引发和异常、回滚并将自动提交设置回
True
我在 2. 中的更新会继续存在吗?
transaction.atomic() 会有所不同吗?
【问题讨论】:
标签: python django postgresql transactions