【发布时间】:2011-05-30 22:01:07
【问题描述】:
根据this test,设置PRAGMA synchronous=OFF Sqlite可以显着提升Sqlite写入性能。
我很清楚这些缺点,但仍想尝试一下。
在 Django 项目中设置此 PRAGMA 选项的最佳位置是什么?
我无法从 settings.py 中执行此操作 - 至少不是文章建议的方式 - 因为 from django.db import connection 会导致递归导入错误。
【问题讨论】:
根据this test,设置PRAGMA synchronous=OFF Sqlite可以显着提升Sqlite写入性能。
我很清楚这些缺点,但仍想尝试一下。
在 Django 项目中设置此 PRAGMA 选项的最佳位置是什么?
我无法从 settings.py 中执行此操作 - 至少不是文章建议的方式 - 因为 from django.db import connection 会导致递归导入错误。
【问题讨论】:
将此代码添加到您已安装应用之一的__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)
【讨论】:
文章建议您将其添加为中间件(在最后)。然后将该中间件配置为 settings.py 中的字符串,因此您不应该遇到任何导入冲突。
【讨论】:
synchronous 这样的 sqlite pragma 的理想位置,因为它感觉更多就像一个一次性的决定。