【问题标题】:How to setup MongoDB with Django如何使用 Django 设置 MongoDB
【发布时间】:2013-04-13 16:35:39
【问题描述】:

我已经学习了大量关于如何使用 MongoDB 设置 Django 项目的教程,但在运行测试命令时仍然遇到相同的错误:

python manage.py runsever

这是我一直关注的链接:

http://www.allbuttonspressed.com/blog/django/2010/05/MongoDB-backend-for-Django-nonrel-released

以下是我从上述命令中得到的错误:

Validating models...

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x10d266210>>
Traceback (most recent call last):

File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 91, in inner_run
self.validate(display_num_errors=True)

File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 266, in validate
num_errors = get_validation_errors(s, app)

File "/Library/Python/2.7/site-packages/django/core/management/validation.py", line 23, in get_validation_errors
from django.db import models, connection

File "/Library/Python/2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])

File "/Library/Python/2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)

File "/Library/Python/2.7/site-packages/django/db/utils.py", line 92, in __getitem__
backend = load_backend(db['ENGINE'])

 File "/Library/Python/2.7/site-packages/django/db/utils.py", line 24, in load_backend
return import_module('.base', backend_name)

 File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)

File "build/bdist.macosx-10.8-intel/egg/django_mongodb_engine/__init__.py", line 13, in <module>

AttributeError: 'tuple' object has no attribute 'insert'

我不知道为什么这不起作用,理想情况下我只想要一个专门用于存储 JSON 文档的数据库设置。有没有更简单的替代方法可以将 Django 与另一个非常适合存储 JSON 信息的数据库连接起来?

【问题讨论】:

  • 您使用的是 MongoDB 2.4 吗?因为我在 django-nonrel 和 mongo 中有一个项目在我升级到 2.4 之前运行良好,现在它们似乎不能一起工作。

标签: python django mongodb django-nonrel django-mongodb-engine


【解决方案1】:

澄清:

INSTALLED_APPS 应该是元组。

他得到AttributeError: 'tuple' object has no attribute 'insert',因为 mongodb 没有正确处理元组 INSTALLED_APPS。 mongodb 中的默认值是插入列表。这之前已经修复,但现在已经消失了。

建议有:

  • 将您的 settings.INSTALLED_APPS 更改为列表而不是元组。 (这对我不利)
  • 通过添加补丁更正他们的代码

【讨论】:

  • @lciamp mongoDB 被列表插入,这就是他收到该错误的原因。因为他安装的应用程序是与mongoDB插入列表冲突的元组,明白吗?为了解决他的问题,他可以使用插入或添加补丁来正确运行它
【解决方案2】:

有一个名为 djongo 的新包用于对 mongoDB 的完全 nosql 支持: - https://nesdis.github.io/djongo/

你不能在你的 venv 中安装 ist:

pip install djongo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2018-12-16
    • 2016-03-19
    • 2014-01-16
    • 2015-03-03
    • 2018-12-14
    相关资源
    最近更新 更多