我对Django中的atomic()
有问题:
https://docs.djangoproject.com/en/1.7/topics/db/transactions/#django.db.transaction.atomic
对于某些方法(在请求/响应周期之外调用),我需要确保该方法在一个事务中执行。我一定要坚持耐用性。atomic()
如果已经在事务中,则将静默地使用保存点。在
记住:酸http://en.wikipedia.org/wiki/ACID
atomic()
的关键字参数savepoint
在这里没有帮助。{savepoint根据^你已经不做任何事了。在
如果已经有事务在运行,我需要一个异常。在
不幸的是,旧的is_managed()
被弃用,没有替换。在
如何创建atomic_raise_exception_if_already_in_transaction()
装饰器?在
检测数据库连接上是否有事务正在运行取决于数据库后端库的行为。E、 g.
psycopg2
for postgresql在上一个事务完成后提交新查询时会隐式启动新事务,除非已打开显式自动提交模式。在前一种情况下,所有查询都将在事务内运行,因此除了提交当前事务外,没有任何可靠的检查。在另一方面,您可以检测是否有
atomic
块处于活动状态,请参见docs。您可以使用connection.in_atomic_block
属性来检查是否激活了atomic
块。在如果只使用
atomic()
,则可以检查连接的in_atomic_block
属性:相关问题 更多 >
编程相关推荐