django.core.exceptions.ImproperlyConfigured:“django_mongodb_engine”不是可用的数据库后端

问题描述 投票:0回答:8

我无法正常运行 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

有任何建议如何解决这个问题。

python django mongodb django-mongodb-engine
8个回答
7
投票

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

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


3
投票

您还需要安装

django-nonrel
,按照文档


1
投票

但是,主要缺点是

django-nonrel
仅在您使用
Python2.x
时才有效,它不能与
Python3.x

一起使用

1
投票

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


1
投票

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

pipenv install djongo

0
投票

我遇到了这个问题。如果您打算使用

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/[电子邮件受保护]

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 可以轻松地让您访问 pymongo 方法:

class Post(Document):
    #fields    

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

0
投票

出现此错误是因为 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',
     }
    }
    

0
投票

较新版本的 pymongo 和 djongo 不兼容, 这有效:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
django = "*"
django-crispy-forms = "*"
django-rest-framework = "*"
social-auth-app-django = "*"
social-auth-app-django-mongoengine = "*"
django-ses = "*"
djongo = "==1.3.6"
python-dotenv = "*"
djoser = "*"
pymongo = "==3.12.3"
pytz = "*"

[dev-packages]

[requires]
python_version = "3.11"
© www.soinside.com 2019 - 2024. All rights reserved.