代码之家  ›  专栏  ›  技术社区  ›  Piotr Czapla

mysql&postgresql中的django事务隔离级别

  •  4
  • Piotr Czapla  · 技术社区  · 15 年前

    您知道Django中使用的事务的默认隔离级别吗? 是否可以以独立于数据库的方式设置隔离级别?

    我主要对MySQL和Postgres感兴趣。

    4 回复  |  直到 11 年前
        1
  •  9
  •   OMG Ponies    13 年前

    您还可以使用django数据库选项对每个客户机/会话进行更改,如下所示:

    DATABASE_OPTIONS = { "init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED", }
    
        2
  •  3
  •   Piotr Czapla    15 年前

    隔离级别不会被MySQL驱动程序更改,因此它取决于服务器的默认隔离级别。

        3
  •  1
  •   jifeng.yin    11 年前

    目前,Django没有设置隔离级别。这是一个bug,因为django不能在高于read-committed的隔离级别下正常工作。但MySQL默认使用可重复读取。有计划添加设置以设置隔离级别( #14026 #13906 MySQL transactions and django

        4
  •  0
  •   Nicolas Maloeuvre    11 年前

    DATABASES = {
        'default': {
            (...)
            'OPTIONS': {
                (...),
                "init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"
            },
         }
    }