Django1.6 transaction.atomic问题

时间:2014-02-17 01:02:31

标签: django transactions postgresql-9.1 atomic django-1.6

我刚刚切换到Django 1.6(使用Posgres 9.1),还有一些我无法回答的问题:

  1. (已回答)如果我当前在一个或多个transaction.atomic块内,是否有打印/显示我的声明?

  2. (已回答)我既没有启用TransactionMiddleware也没有将ATOMIC_REQUESTS设置为True。因此,默认情况下,我的代码未包含在transaction.atomic块中,对吗?

  3. transaction.atomic块内执行时,通过游标正确执行的sql语句是否正确?是否有其他/更好的方法来提交它们?

    with transaction.atomic():
        cursor = connection.cursor()
        cursor.execute(sql)
    
  4. 我是否需要将cursor.executemany()包裹在transaction.atomic块中,或者执行是否已经原子地发生了?

  5. 如何查看当前的autocommit状态?何时在连接开始时将事务设置为全局数据库设置?

1 个答案:

答案 0 :(得分:3)

回答你的一个问题:

您可以使用从以下位置返回的connection对象查看您当前是否处于原子块中:

from django.db.transaction import get_connectiondjango.db.connections

中的任何连接对象

具有in_atomic_block属性。


我觉得只需查看django source

即可