Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么Django说我没有';还没有设置数据库引擎吗?_Python_Django_Postgresql - Fatal编程技术网

Python 为什么Django说我没有';还没有设置数据库引擎吗?

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

我有一个Django项目,我在这方面有点新手。我进行了以下PyUnit测试,试图将对象保存到PostgreSQL数据库中:

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的测试运行程序?