我刚切换到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_connectiondjango.db.connections内部的任何连接对象

    具有in_atomic_block属性。

    我觉得仅通过django source查看它会是最简单的

    10-07 19:04
    查看更多