Place to set Sqlite PRAGMA option in Django project
According to this test, setting PRAGMA synchronous=OFF Sqlite can dramatically improve Sqlite write performance.
I am well aware of the drawbacks, but wou开发者_开发问答ld still like to try this out.
What would be the best location within a Django project to set this PRAGMA option?
I cannot do it from settings.py - at least not the way the article suggests - because from django.db import connection
would cause a recursive import error.
Add this code in the __init__.py
file of one of your installed app:
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)
The article suggests that you add that as a middleware (at the very end). That middleware is then configured as a string inside settings.py, so you shouldn't get any import conflicts.
精彩评论