在django中强制严格的sql模式

jon*_*nny 13 python mysql django

我正试图强迫我的django项目始终使用严格sql_mode.还有其他方法,而不是把以下内容manage.py?看起来过于复杂.

def set_strict_sql_mode(sender, **kwargs):
    from django.conf import settings
    if settings.DATABASES['default']['ENGINE'] == 'django.db.backends.mysql':
        from django.db import connection
        cursor = connection.cursor()
        cursor.execute('SET session sql_mode=traditional')

from django.core.signals import request_started
request_started.connect(set_strict_sql_mode)
Run Code Online (Sandbox Code Playgroud)

jon*_*nny 48

实际上要求被证明是一个很好的橡皮鸭.在询问之后,我发现OPTIONS可以在以下DATABASES设置中提供自定义数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'sql_mode': 'traditional',
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

希望它能帮到任何人!

  • 这是讨论sql_mode选项的mysql页面:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-setting (3认同)
  • 哈哈+1回答您自己的问题和[“一只好橡皮鸭”](http://en.wikipedia.org/wiki/Rubber_duck_debugging):D (2认同)

Man*_*hav 11

您也可以尝试使用Database []中的添加以下选项

'OPTIONS': {
        'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
    },
Run Code Online (Sandbox Code Playgroud)

它的工作.

  • 我添加了这个,但我仍然收到警告。有什么方法可以判断它是否正确生效? (2认同)