2014-04-11 28 views
6

Sto provando a forzare il mio progetto django a utilizzare sempre il rigo sql_mode. C'è un altro modo di mettere quanto segue in manage.py? Sembra troppo complicato.Forza la modalità sql rigorosa in django

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) 
+0

Non mi odio per questo, dal momento che il codice di inizializzazione per django non è mai stato risolto in modo pulito: Hai provato a creare una classe middleware, inclusa la classe middleware nell'elenco e sollevando MiddlewareNotUsed nel middleware costruttore DOPO aver eseguito il codice che proponi qui? –

risposta

24

In realtà chiedendo dimostrato di essere una buona anatra di gomma. Solo dopo aver chiesto, ho trovato il database personalizzato OPTIONS si possono fornire nelle impostazioni DATABASES come questo:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'OPTIONS': { 
      'sql_mode': 'traditional', 
     } 
    } 
} 

Speranza che aiuta nessuno!

+1

Haha +1 per rispondere alla tua domanda e ["una buona anatra di gomma"] (http://en.wikipedia.org/wiki/Rubber_duck_debugging): D –

+1

Si prega di fornire un link di tutti i 'OPTIONS disponibili' – surfer190

+1

Qui è : https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html – jonny

5

Si può anche provare con aggiunta di sotto opzione nel database []

'OPTIONS': { 
     'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 
    }, 

suo funzionamento.

Problemi correlati