我无法正常运行 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
有任何建议如何解决这个问题。
如果您使用 djongo 并在调用 make migrations 时遇到此错误,请执行以下操作:
打开终端并安装 pytz (pip install pytz)
但是,主要缺点是
django-nonrel
仅在您使用Python2.x
时才有效,它不能与Python3.x
一起使用
与通过 ide 安装相比,尝试卸载“Pymongo”并将其安装为“pip install pymongo”
好吧,我在激活 pipenv 时也遇到了同样的问题。后来,我发现我的 pipenv 中没有安装 djongo。我刚刚安装了它。现在已经正常使用了。
pipenv install djongo
我遇到了这个问题。如果您打算使用
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)
出现此错误是因为 django utils.py 文件无法识别 django 是可用的后端。要解决此错误,请按照下列步骤操作:
转到
C:\Users\User\AppData\Local\Programs\Python\Python38-32\Lib\site-packages
并找到 django 文件夹。
现在将 django 文件夹剪切并粘贴到
C:\Users\User\AppData\Local\Programs\Python\Python38-32\Lib\site -packages\django\db\backends
目录。
现在您可能会收到错误无法从 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
。
现在在 django 项目的 settings.py 文件中添加以下行
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.djongo',
'NAME': 'admin',
}
}
较新版本的 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"