加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 为什么Django说我还没有设置DATABASE_ENGINE?

发布时间:2020-12-20 11:12:17 所属栏目:Python 来源:网络整理
导读:我有一个Django项目,我有点像新手.我有以下PyUnit测试尝试将对象保存到PostgreSQL数据库: import unittestfrom foo.models import ObjectTypeclass DbTest(unittest.TestCase): def testDBConnection(self): object_type = ObjectType() object_type.name =
我有一个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,它运行成功,所以我的数据库应该正确设置.但是,当我尝试运行上述单元测试时,我收到以下错误:

File
“C:Python26libsite-packagesdjangodbbackendsdummybase.py”,
line 15,in complain
raise ImproperlyConfigured,“You haven’t set the DATABASE_ENGINE
setting yet.” ImproperlyConfigured:
You haven’t set the DATABASE_ENGINE
setting yet.

有没有人遇到过像这样的问题?如果是的话,任何关于从哪里开始的建议?谢谢!

解决方法

这可能是因为你直接运行测试,即只是python testfile.py.这样您就可以有效地绕过所有Django机制并直接使用Model类.
缺点是,DB后端没有自动设置(由Django加载settings.py并连接到相应的DB),因此您遇到的错误.
我想有一个解决这个问题的方法,但它确实需要内部Django工作的知识.

相反,你应该做的是通过Django的测试框架(check out the documentation)启动你的测试.它将负责正确设置数据库连接等.还有一些时髦的功能,如测试夹具.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读