2010-12-26 9 views
8

Zgodnie z this test ustawienie PRAGMA synchronous = OFF Sqlite może znacznie poprawić wydajność zapisu Sqlite.Miejsce do ustawienia opcji Sqlite PRAGMA w projekcie Django

Jestem dobrze poinformowany o wadach, ale nadal chciałbym to wypróbować.

Jaka byłaby najlepsza lokalizacja w projekcie Django, aby ustawić tę opcję PRAGMA?

Nie mogę tego zrobić z settings.py - przynajmniej nie tak, jak sugeruje artykuł - ponieważ from django.db import connection spowoduje błąd rekursywnego importu.

Odpowiedz

11

Dodaj ten kod w pliku jednego z zainstalowanych aplikacji __init__.py:

from django.db.backends.signals import connection_created 
def activate_foreign_keys(sender, connection, **kwargs): 
    """Enable integrity constraint with sqlite.""" 
    if connection.vendor == 'sqlite': 
     cursor = connection.cursor() 
     cursor.execute('PRAGMA foreign_keys = ON;') 

connection_created.connect(activate_foreign_keys) 
+0

ładne i czyste rozwiązanie, postara. Dzięki! –

+0

Chociaż usunąłem mój plik DB, usunąłem wszystkie poprzednie migracje i utworzyłem nowe migracje, nie zrobiło to dla mnie żadnej różnicy. Tabele nie zostały utworzone zgodnie z oczekiwaniami z "przy kasowaniu kasowania". Zastanawiam się, dlaczego tak się nie dzieje. –

0

Artykuł sugeruje dodanie tego jako oprogramowania pośredniego (na samym końcu). To oprogramowanie pośrednie jest następnie konfigurowane jako ciąg w pliku settings.py, więc nie powinieneś mieć żadnych konfliktów importowych.

Powiązane problemy