Mar*_*n K 5 sqlite testing django
当尝试使用 SqlLite3 作为 Django 的数据库后端时,我希望能够使用 SqlLite 的外键支持。根据http://www.sqlite.org/foreignkeys.html,您可以通过运行启用外键支持:
PRAGMA foreign_keys = ON;
Run Code Online (Sandbox Code Playgroud)
默认情况下禁用此支持,并且在运行大多数依赖于数据库的测试时是可取的。在使用 Django 测试框架时如何控制这个特性?您可以在 setUp/tearDown 方法中发送特定于后端的命令吗?您是否愿意在全局连接设置('DATABASE = '设置)中指定此选项?
这里部分回答: https: //stackoverflow.com/a/6843142/552671。
您只需在您的应用程序中激活它(通常在myapp/apps.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;')
class MyAppConfig(AppConfig):
def ready(self):
connection_created.connect(activate_foreign_keys)
Run Code Online (Sandbox Code Playgroud)
MyAppConfig您还必须配置,default_app_config = 'myapp.apps.PanelConfig'写入myapp/__init__.py.
注意:这不仅会激活外键用于测试,而且还会激活 SQLite。不过,我认为这就是你想要的。
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |