Django models mysql中的Django事务隔离级别&;postgresql

Django models mysql中的Django事务隔离级别&;postgresql,django-models,isolation-level,Django Models,Isolation Level,您知道Django中使用的事务的默认隔离级别吗? 是否可以以独立于数据库的方式设置隔离级别 我主要对mysql和postgres感兴趣 mysql驱动程序不会更改隔离级别,因此它取决于服务器的默认隔离级别。目前django没有设置隔离级别。这是一个bug,因为django不能在比READ COMMITTED更高的隔离级别下正常工作。但是MySQL默认使用可重复读取。计划添加一个设置来设置隔离级别(),并讨论如何将readcommitted设置为默认值()。我还写了一篇关于的详细文章。您还可以使用

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


我主要对mysql和postgres感兴趣

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

目前django没有设置隔离级别。这是一个bug,因为django不能在比READ COMMITTED更高的隔离级别下正常工作。但是MySQL默认使用可重复读取。计划添加一个设置来设置隔离级别(),并讨论如何将readcommitted设置为默认值()。我还写了一篇关于的详细文章。

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

DATABASE_OPTIONS = { "init_command": "SET storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED", }
(对不起,我无法对丹希普发表评论) 这个解决方案为我所用(mySQL),我在数据库字段中添加了Peter的代码:

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

如果要使用“读取未限制隔离级别”

在数据库连接配置中添加“隔离级别”:“读取未提交”选项

数据库={
“读取未限制”:{
“选项”:{
“隔离级别”:“读取未提交”
},
},

}
是否有人可以确认此操作是否正常运行?我对repeatable read有问题:@danihp肯定会运行,尽管语法是关闭的。我正在使用
SET storage\u engine=INNODB;设置会话事务隔离级别READ COMMITED代替谢谢,但是你链接到的博客似乎是私人的。你能打开那篇文章,或者复制/粘贴到这里吗?你能不能引用一些信息或详细说明“django不能在比READ COMMITTED更高的隔离级别下正常工作”@Sebastian Noack这篇文章说“需要权限”?我发现这篇文章引用了这篇私人文章,实际上有你可以阅读的内容:我相信这与Django如何模拟自动提交而不是使用数据库级自动提交有关。Django 1.6中已对此进行了修复: