为啥 django test --keep-db 适用于 postgres 数据库但不适用于默认 sqlite3
Posted
技术标签:
【中文标题】为啥 django test --keep-db 适用于 postgres 数据库但不适用于默认 sqlite3【英文标题】:Why django test --keep-db works with postgres database but not with default sqlite3为什么 django test --keep-db 适用于 postgres 数据库但不适用于默认 sqlite3 【发布时间】:2018-01-27 03:20:41 【问题描述】:我正在两种数据库设置中测试 Django (v1.11.4) 应用程序: 1) 在 docker 容器中运行的 postgres 数据库 要么 2) sqlite3 作为(默认数据库)
当使用 --keepdb
选项运行测试时,我观察到这两种设置的不同行为:对于 postgres --keepdb
按预期工作(没有数据库创建并且运行测试很快)但对于 sqlite3 数据库 --keepdb
似乎不起作用(每次运行测试都会创建数据库)。
是否可以让--keepdb
与 sqlite3 一起使用?如果是这样,知道哪些设置可能会影响上述行为吗?
【问题讨论】:
【参考方案1】:默认情况下,Django uses an in-memory database when testing sqlite。这意味着测试数据库不是持久的。您可以通过指定测试名称在 DATABASES
设置中覆盖此行为:
DATABASES =
'default':
'ENGINE': 'django.db.backends.sqlite',
'NAME': 'db.sqlite3',
'TEST':
'NAME': 'testdb.sqlite3',
,
,
【讨论】:
以上是关于为啥 django test --keep-db 适用于 postgres 数据库但不适用于默认 sqlite3的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 django 的响应错误中没有设置 .accepted_renderer?
为啥 django-rest-framework 不显示 OneToOneField 数据 - django