在Django项目中设置Sqlite PRAGMA选项的位置

时间:2010-12-26 18:53:12

标签: django sqlite

根据this test,设置PRAGMA synchronous = OFF Sqlite可以显着提高Sqlite写入性能。

我很清楚这些缺点,但还是想尝试一下。

Django项目中设置此PRAGMA选项的最佳位置是什么?

我无法通过settings.py执行此操作 - 至少不是文章建议的方式 - 因为from django.db import connection会导致递归导入错误。

2 个答案:

答案 0 :(得分:14)

将此代码添加到已安装的应用之一的__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)

答案 1 :(得分:0)

文章建议您将其添加为中间件(最后)。然后将该中间件配置为settings.py中的字符串,这样就不会出现任何导入冲突。