我正在用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测试数据库中本地运行测试,这是一个限制。
如果我对问题的描述不充分,请尝试更清楚地描述一下。