【发布时间】:2015-04-04 23:38:27
【问题描述】:
我对 Django 中的 atomic() 有疑问:
https://docs.djangoproject.com/en/1.7/topics/db/transactions/#django.db.transaction.atomic
对于某些方法(称为外部请求/响应周期),我需要确定该方法在一个事务中执行。我必须强制耐久。 atomic() 如果已经在事务中,将静默使用保存点。
记住:ACID http://en.wikipedia.org/wiki/ACID
- 原子性
- 一致性
- 隔离
- 耐用性
atomic() 的关键字参数 savepoint 在这里没有帮助。如果您使用 savepoint=False atomic() 如果已经在事务中,则不执行任何操作(根据文档)。
如果事务已经在运行,我需要一个异常。
很遗憾,旧的 is_managed() 已被弃用,没有替代品。
如何创建atomic_raise_exception_if_already_in_transaction() 装饰器?
【问题讨论】:
标签: python django database transactions