【问题标题】:django.core.exceptions.ImproperlyConfigured: 'django_mongodb_engine' isn't an available database backenddjango.core.exceptions.ImproperlyConfigured: 'django_mongodb_engine' 不是可用的数据库后端
【发布时间】:2015-05-29 10:19:30
【问题描述】:

我无法正常运行 django mongo 引擎。

我在 settings.py 中的数据库条目是

DATABASES = {
'default': {
    'ENGINE': 'django_mongodb_engine',
    'NAME': 'local',
}
}

我的点子冻结结果是

Django==1.8.2
django-mongodb-engine==0.5.2
djangotoolbox==1.6.2
pymongo==3.0.2

运行时出错

python manage.py runserver

django.core.exceptions.ImproperlyConfigured: 'django_mongodb_engine' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
u'base', u'mysql', u'oracle', u'postgresql_psycopg2', u'sqlite3'
Error was: cannot import name BaseDatabaseFeatures

关于如何解决这个问题的任何建议。

【问题讨论】:

  • @ajaysingh,如何解决这个问题?我面临同样的问题
  • @jignasha django-norel 在最新版本的 django 中不受支持。该库已弃用。
  • @ajaysingh,那么在 Django 中使用 mongoDB 的替代方法是什么?如何解决这个问题?
  • 对于我的具体用例,我搬到了烧瓶。

标签: python django mongodb django-mongodb-engine


【解决方案1】:

根据documentation,您还需要安装django-nonrel

【讨论】:

【解决方案2】:

与通过 ide 安装相比,尝试卸载“Pymongo”并将其安装为“pip install pymongo”

【讨论】:

  • 嗨,您是如何解决“React app with Django error 'string indices must be integers'”的问题的?您似乎已删除 StackOverflow 上的问题。
【解决方案3】:

但是,主要缺点是django-nonrel 仅在您使用Python2.x 时有效,它不能与Python3.x 一起使用

【讨论】:

  • 这听起来更像是一个评论,而不是这个问题的答案。如果我错了,请编辑您的答案以清楚地证明这如何回答问题。否则,请在您获得足够的声誉后留下评论。
【解决方案4】:

我遇到了这个问题。如果您打算使用Django 1.7.x, 1.8.x,可以正常工作的库是:
django-mongoengine v0.2.1

在以后的版本 (pip install django-mongoengine) 中,它会强制安装 Django 2.x(您仍然可以通过添加 --no-deps 来取消它),但是如果通过以下方式强制 django-mongoengine 软件包版本,那么麻烦会更少: `pip install git+https://github.com/MongoEngine/django-mongoengine@v0.2.1

requirements.txt 文件仍然是这样的:

Django==1.7.11
-e git+https://github.com/MongoEngine/django-mongoengine@4ea7168faf9b6f67a5c9e8e82690b4310aca0ff0#egg=django_mongoengine-v0.2.1
djangotoolbox==1.8.0
mongoengine==0.13.0
pymongo==2.8
pyserial==3.1.1
requests==2.13.0
six==1.10.0
wheel==0.24.0

django-mongoengine 的好处是 mongoengine 很容易让你使用access pymongo 方法:

class Post(Document):
    #fields    

collection = Post._get_collection()
collection.update({}, {"$set": {"newfield": 1}}, multi=True)

【讨论】:

    【解决方案5】:

    出现此错误是因为 django utils.py 文件无法识别 django 是可用的后端。要解决此错误,请按以下步骤操作:

    1. 转到C:\Users\User\AppData\Local\Programs\Python\Python38-32\Lib\site-packages 并找到 django 文件夹。

    2. 现在将 django 文件夹剪切并粘贴到 C:\Users\User\AppData\Local\Programs\Python\Python38-32\Lib\site -packages\django\db\backends目录。

    3. 现在您可能会收到错误无法从 django.utils 导入六个。要解决这个问题,请转到C:\Users\User\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\django\db\backends\django\operations.py 文件并将from django.utils import six , datetime 行替换为from django.utils import datetime 并在其下方写import six

    4. 现在在你的 django 项目的 settings.py 文件中添加行

      DATABASES = {
         'default': {
          'ENGINE': 'django.db.backends.djongo',
          'NAME': 'admin',
       }
      }
      

    【讨论】:

      【解决方案6】:

      好吧,我的 pipenv 激活时遇到了同样的问题。后来,我发现 djongo 没有安装在我的 pipenv 中。我刚刚安装了它。现在一切正常。

      pipenv install djongo
      

      【讨论】:

        【解决方案7】:

        如果您使用 djongo 并在调用 make migrations 时遇到此错误,请执行以下操作:

        打开终端并安装pytz(pip install pytz)

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2013-04-13
        • 2016-06-05
        • 2019-07-16
        • 2019-04-25
        • 2023-03-29
        • 2015-12-11
        • 2013-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多