我刚刚切换到Django 1.6(使用Posgres 9.1),还有一些我无法回答的问题:
(已回答)如果我当前在一个或多个transaction.atomic
块内,是否有打印/显示我的声明?
(已回答)我既没有启用TransactionMiddleware
也没有将ATOMIC_REQUESTS
设置为True。因此,默认情况下,我的代码未包含在transaction.atomic
块中,对吗?
在transaction.atomic
块内执行时,通过游标正确执行的sql语句是否正确?是否有其他/更好的方法来提交它们?
with transaction.atomic():
cursor = connection.cursor()
cursor.execute(sql)
我是否需要将cursor.executemany()
包裹在transaction.atomic
块中,或者执行是否已经原子地发生了?
如何查看当前的autocommit
状态?何时在连接开始时将事务设置为全局数据库设置?
答案 0 :(得分:3)
回答你的一个问题:
您可以使用从以下位置返回的connection
对象查看您当前是否处于原子块中:
from django.db.transaction import get_connection
或django.db.connections
具有in_atomic_block
属性。
我觉得只需查看django source
即可