AttributeError:'DatabaseWrapper'对象没有属性'Database'

时间:2013-12-01 18:40:55

标签: python django

版本号是Django 1.6,Python 3.3.2和Mac OS X 10.9

我使用此命令创建应用程序

 python3 manage.py startapp lists

然后在我的lists / tests.py文件中我把这段代码

from django.test import TestCase

class SmokeTest(TestCase):

 def test_bad_maths(self):
    self.assertEqual(1 + 1, 3)

然后我从app根文件夹

运行此命令
python3 manage.py test

这是回来的堆栈跟踪,它无法正常工作

    E

         ======================================================================
ERROR: test_bad_maths (lists.tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 124, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 111, in connect
    conn_params = self.get_connection_params()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 85, in get_connection_params
    raise NotImplementedError
NotImplementedError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 653, in supports_transactions
    self.connection.enter_transaction_management()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 288, in enter_transaction_management
    if managed == self.get_autocommit():
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 324, in get_autocommit
    self.ensure_connection()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 124, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.3/site-packages/django/db/utils.py", line 86, in __exit__
    db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
AttributeError: 'DatabaseWrapper' object has no attribute 'Database'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 124, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 111, in connect
    conn_params = self.get_connection_params()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 85, in get_connection_params
    raise NotImplementedError
NotImplementedError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.3/site-packages/django/test/testcases.py", line 178, in __call__
    self._pre_setup()
  File "/usr/local/lib/python3.3/site-packages/django/test/testcases.py", line 749, in _pre_setup
    self._fixture_setup()
  File "/usr/local/lib/python3.3/site-packages/django/test/testcases.py", line 861, in _fixture_setup
    if not connections_support_transactions():
  File "/usr/local/lib/python3.3/site-packages/django/test/testcases.py", line 848, in connections_support_transactions
    for conn in connections.all())
  File "/usr/local/lib/python3.3/site-packages/django/test/testcases.py", line 848, in <genexpr>
    for conn in connections.all())
  File "/usr/local/lib/python3.3/site-packages/django/utils/functional.py", line 49, in __get__
    res = instance.__dict__[self.func.__name__] = self.func(instance)
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 664, in supports_transactions
    self.connection.leave_transaction_management()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 317, in leave_transaction_management
    if managed == self.get_autocommit():
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 324, in get_autocommit
    self.ensure_connection()
  File "/usr/local/lib/python3.3/site-packages/django/db/backends/__init__.py", line 124, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.3/site-packages/django/db/utils.py", line 86, in __exit__
    db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
AttributeError: 'DatabaseWrapper' object has no attribute 'Database'

----------------------------------------------------------------------
Ran 0 tests in 0.031s

FAILED (errors=1)

1 个答案:

答案 0 :(得分:2)

我有完全相同的环境:  * Mac OS X 10.9  * Python 3.3.2  * Django 1.6

我安装了virtualenv 1.10.1并创建一个,安装django并创建项目和app:

virtualenv-3.3 tt
cd tt
. bin/activate
pip install django==1.6
django-admin.py startproject myproj
cd myproj
chmod +x manage.py
./manage.py startapp lists

现在我将你的代码粘贴到lists / test.py并使用默认settings.py(数据库sqlite3等)运行测试

./manage.py test

并得到了正确的结果:

为别名'default'创建测试数据库......

F
======================================================================
FAIL: test_bad_maths (lists.tests.SmokeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/erevilla/tt/myproj/lists/tests.py", line 6, in test_bad_maths
    self.assertEqual(1 + 1, 3)
AssertionError: 2 != 3

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)
Destroying test database for alias 'default'...

我无法重现你的问题。请检查:

  • settings.py(您使用的是哪个数据库)
  • manage.py(错误版本)
  • DJANGO_SETTINGS_MODULE未定义