2010-12-26 17 views
8

De acuerdo con this test, establecer PRAGMA synchronous = OFF Sqlite puede mejorar drásticamente el rendimiento de escritura de Sqlite.Lugar para establecer la opción Sqlite PRAGMA en el proyecto Django

Soy muy consciente de los inconvenientes, pero aún me gustaría probar esto.

¿Cuál sería la mejor ubicación dentro de un proyecto Django para configurar esta opción PRAGMA?

No puedo hacerlo desde settings.py, al menos no de la manera que sugiere el artículo, porque from django.db import connection causaría un error de importación recursivo.

Respuesta

11

Añadir este código en el archivo __init__.py de uno de su aplicación instalada:

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

limpio y agradable solución, a tratar. ¡Gracias! –

+0

Aunque eliminé mi archivo de base de datos, eliminé todas las migraciones anteriores y creé nuevas migraciones, esto no hizo ninguna diferencia para mí. Las tablas no se crearon con "on delete cascade" como se esperaba. Me pregunto por qué no está sucediendo eso. –

0

El artículo sugiere que agregue eso como un middleware (al final). Ese middleware se configura como una cadena dentro de settings.py, por lo que no deberías tener conflictos de importación.

Cuestiones relacionadas