Python 为什么Django说我没有';还没有设置数据库引擎吗?
我有一个Django项目,我在这方面有点新手。我进行了以下PyUnit测试,试图将对象保存到PostgreSQL数据库中:Python 为什么Django说我没有';还没有设置数据库引擎吗?,python,django,postgresql,Python,Django,Postgresql,我有一个Django项目,我在这方面有点新手。我进行了以下PyUnit测试,试图将对象保存到PostgreSQL数据库中: import unittest from foo.models import ObjectType class DbTest(unittest.TestCase): def testDBConnection(self): object_type = ObjectType() object_type.name = 'Test Ob
import unittest
from foo.models import ObjectType
class DbTest(unittest.TestCase):
def testDBConnection(self):
object_type = ObjectType()
object_type.name = 'Test Object'
object_type.description = 'For testing purposes'
object_type.save()
我的数据库设置如下:
DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'FOO'
DATABASE_USER = 'username'
DATABASE_PASSWORD = 'password'
DATABASE_HOST = 'localhost'
DATABASE_PORT = '5432'
我为我的项目运行了python manage.py syncdb,它成功地工作了,所以我的数据库应该正确设置。但是,当我尝试运行上述单元测试时,出现以下错误:
文件
“C:\Python26\lib\site packages\django\db\backends\dummy\base.py”,
第15行,投诉
raise未正确配置,“您尚未设置数据库\u引擎
尚未设置。“配置不当:
您尚未设置数据库引擎
还没开始
有没有人遇到过这样的问题?如果是,有什么建议可以从哪里开始?谢谢 这可能是因为您直接运行测试,即仅
python testfile.py
。这样可以有效地绕过所有Django机制,直接使用模型类。
缺点是,数据库后端不是自动设置的(由Django加载settings.py
并连接到相应的数据库),因此您会遇到错误。
我认为有一个解决这个问题的方法,但它确实需要了解内部Django工作
相反,您应该做的是通过Django的测试框架()启动测试。它将负责正确设置DB连接等。还有一些时髦的功能,如测试夹具 需要先加载Django设置文件,然后才能导入模型。如果您不能使用Django的测试框架,那么您可以在测试中使用以下代码:
from django.conf import settings
settings.configure(
DATABASE_ENGINE='postgresql_psycopg2',
DATABASE_NAME='FOO',
DATABASE_USER='username',
DATABASE_PASSWORD='password',
DATABASE_HOST='localhost',
DATABASE_PORT='5432',
INSTALLED_APPS=('foo',)
)
或者,如果您不需要如此明确,那么您可以这样做:
import django.core.management
from foo import settings
django.core.management.setup_environ(settings)
您应该能够设置环境变量DJANGO_SETTINGS_MODULE=myapp.SETTINGS,并将其用于独立脚本
在Linux/bash中,您需要执行以下操作:导出DJANGO\u设置\u MODULE=myapp.SETTINGS您是如何运行测试的?您是否使用DJANGO的测试运行程序?