我刚切换到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
的状态?在连接开始时,什么时候将状态设置为事务,作为全局数据库设置? 最佳答案
要回答您的问题之一:
您可以使用从以下位置返回的connection
对象来确定当前是否处于原子块中:from django.db.transaction import get_connection
或django.db.connections
内部的任何连接对象
具有in_atomic_block
属性。
我觉得仅通过django source查看它会是最简单的