django默认开事务的麻烦事

最近DBA发现总是有大事务报警,最终排查到是因为django默认在查询之前执行了

set autocommit=0

原来,mysql如果开了set autocommit=0,那么所有的语句一定是在一个事务里

 

所以打算关闭该设置,查django官方文档,可以通过以下两种方式不进行这个设置

1.settings.py文件添加

DISABLE_TRANSACTION_MANAGEMENT = True

2.settings.py db部分添加

'OPTIONS':{

     'autocommit':True

}

但是都不起作用,于是被逼无奈不得不修改了django源码,

#/python2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py 第387行附近添加
cursor.execute('set autocommit=1')
cursor.execute('SET SQL_AUTO_IS_NULL = 0')

问题得以解决,略挫的方法

posted @ 2014-06-10 17:12  独木桥  阅读(603)  评论(0编辑  收藏  举报