在Django中测试的问题(dev db-postgresql,test db-sqlite)

时间:2018-07-11 14:09:46

标签: django postgresql sqlite database-schema

我正在用python / django编写一个项目,该项目使用了postgresql数据库。现在,我想为我的某些模型,视图等编写测试,但是我希望它们与单独的内存数据库(SQLite3)一起工作。

问题是在PostgreSQL数据库中所有表都采用某种方案,即我的模型如下:

class Service(models.Model):
    # some fields
    # .......
    class Meta:
        # double quotes are required for the correct 
        # migration to the existing postgresql db!!!!
        db_table = '"processing"."service"' 

据我所知,在SQLite数据库中没有“模式”的概念,因此我以这种方式在SQLite测试数据库中手动创建了表:

CREATE TABLE `processing.service` (...)

但是当我执行迁移命令时,会显示错误:

File "/home/dm/Projects/python/toolkit/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 83, in _execute
return self.cursor.execute(sql)
File "/home/dm/Projects/python/toolkit/venv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 301, in execute
return Database.Cursor.execute(self, query)
sqlite3.OperationalError: unknown database "processing"

如果我使用以下查询创建了一个表:

CREATE TABLE `"processing"."service"` (...)

迁移命令已成功完成,但是命令Service.objects.all()引发了错误:

File "/home/dm/Projects/python/toolkit/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "/home/dm/Projects/python/toolkit/venv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 303, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: processing.service

我了解为什么要输出,但不知道如何解决。请帮忙!

项目应与postgresql一起使用并在sqlite测试数据库中本地运行测试,这是一个限制。

如果我对问题的描述不充分,请尝试更清楚地描述一下。

0 个答案:

没有答案
相关问题