gpt4 book ai didi

python - 如何使用 sqlite 在 pytest 中启用外键检查

转载 作者:行者123 更新时间:2023-11-28 18:24:40 26 4
gpt4 key购买 nike

我有一个 Django 项目,当我调用 py.test 时会运行测试,但我最近注意到它没有检查外键约束。我怎样才能让它检查外键约束?

显然,foreign key constraints weren't even possible until sqlite 3 ,但我真的不知道我运行的是什么版本,因为我没有 sqlite 的 cli,但它只是被 django 自动包含了吗? (我使用的是 django 1.9.10),但是 sqlite 3 于 2009 年问世,所以这不是问题吧?

也许 it must still be enabled by the application at runtime, using the PRAGMA foreign_keys command. ,但我不知道如何让我的测试做到这一点?

[更新]因此,开箱即用的 sqlite 似乎没有检查它们。

class Referenced(models.Model):
pass

class Referencer(models.Model):
fk = models.ForeignKey(Referenced)

>>> Referencer.objects.create(fk_id=-1)
<Referencer>
>>> Referencer.objects.all()[0].fk
DoesNotExist

最佳答案

我最终创建了一个包来解决这个问题。

pip install sqlite_checkforeignkeys

然后配置数据库:

DATABASES = {
'default': {
'ENGINE': 'sqlite_checkforeignkeys_engine',
'TEST': {'NAME': ':memory:'},
}
}

它涉及重写现有的 sqlite 引擎以强制执行外键

更多信息可以在 https://github.com/hulu/sqlite_checkforeignkeys 找到

关于python - 如何使用 sqlite 在 pytest 中启用外键检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42238857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com