【问题标题】:Using MongoDB as backend for Django: Error running "python manage.py migrate"使用 MongoDB 作为 Django 的后端:运行“python manage.py migrate”时出错
【发布时间】:2016-07-21 23:29:23
【问题描述】:

我是 Django 新手,想使用 django 和 Mongodb 作为后端。我从互联网上给出的例子开始。但是当我尝试运行迁移时遇到问题。

已安装:django 1.8、pymongo 2.8、mongodb

模型.py

 from __future__ import unicode_literal
 from mongoengine import *

 class Choice(EmbeddedDocument):
        choice_text = StringField(max_length=200)
        votes = IntField(default=0)

 class Poll(Document):
    question = StringField(max_length=200)
    pub_date = DateTimeField(help_text='date published')
    choices = ListField(EmbeddedDocumentField(Choice))

Setttings.py : 在 mongodb 中创建了一个用户“mango”。 mongodb 运行良好

import mongoengine
from mongoengine import connect

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.dummy',
    },
}

SESSION_ENGINE = 'mongoengine.django.sessions'

_MONGODB_USER = 'mango'
_MONGODB_PASSWD = 'mango'
_MONGODB_HOST = 'localhost'
_MONGODB_NAME = 'performance'
_MONGODB_DATABASE_HOST = \
    'mongodb://%s:%s@%s/%s' \
    % (_MONGODB_USER, _MONGODB_PASSWD, _MONGODB_HOST, _MONGODB_NAME)

mongoengine.connect(_MONGODB_NAME, host=_MONGODB_DATABASE_HOST)

AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend',
)

我尝试运行 python manage.py migrate,它抛出了以下错误。但我可以从 shell 连接到 Db。有人可以帮我理解这个问题吗?

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 302, in execute
    settings.INSTALLED_APPS
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 55, in __getattr__
    self._setup(name)
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 43, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 99, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Users\pm348b\Desktop\Praneeth_Desktop\Python_Programs\TEST\mysite\mysite\settings.py", line 118, in <module>
    mongoengine.connect(_MONGODB_NAME, host=_MONGODB_DATABASE_HOST)
  File "C:\Python27\lib\site-packages\mongoengine\connection.py", line 165, in connect
    return get_connection(alias)
  File "C:\Python27\lib\site-packages\mongoengine\connection.py", line 128, in get_connection
    raise ConnectionError("Cannot connect to database %s :\n%s" % (alias, e))
mongoengine.connection.ConnectionError: Cannot connect to database default :
command SON([('saslStart', 1), ('mechanism', 'SCRAM-SHA-1'), ('autoAuthorize', 1), ('payload', Binary('n,,n=mango,r=OTc3NDkxNTE3NTM3', 0))]) on namespace performance.$cmd failed: Authentication failed.

【问题讨论】:

    标签: python django mongodb python-2.7 django-models


    【解决方案1】:
    DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'Name of the Cluster',
        'HOST': 'The link which mongo provides for python',
        'USER': "Created User's username",
        'PASSWORD': 'Password of the above user',
    }
    

    在你的 settings.py 文件中使用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 2021-11-10
      • 2015-11-25
      • 2021-02-16
      • 1970-01-01
      • 2020-10-02
      相关资源
      最近更新 更多