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

问题描述 投票:0回答:2

根据这个测试,设置

PRAGMA synchronous=OFF
可以显着提高SQLite写入性能。

我很清楚缺点,但仍然想尝试一下。

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

我不能从

settings.py
做到这一点 - 至少不是文章建议的方式 - 因为
from django.db import connection
会导致递归导入错误。

django sqlite
2个回答
20
投票

将此代码添加到您已安装的应用程序之一的

__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
投票

本文建议您将其添加为中间件(在最后)。然后该中间件在 settings.py 中配置为字符串,因此您不应该遇到任何导入冲突。

© www.soinside.com 2019 - 2024. All rights reserved.