How can I enable foreign-key checks in pytest using sqllite(如何使用sqllite在pytest中启用外键检查)
问题描述
我有一个Django项目,其测试在我调用py.test
时运行,但我最近注意到它没有检查外键约束。如何让它检查外键约束?
显然,foreign key constraints weren't even possible until sqlite 3,但是我真的不知道我正在运行什么版本,因为我没有sqlite的CLI,但是它只是被Django自动包括在内?(我使用的是Django 1.9.10),但是sqlite3是在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
这篇关于如何使用sqllite在pytest中启用外键检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何使用sqllite在pytest中启用外键检查


- 更改自动增量起始编号? 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- SQL 临时表问题 2022-01-01