Windows下Django集成MongoDB执行迁移报djongo后端不可用错误
问题根因
这个报错本质是Djongo数据库后端导入失败,触发了Django的内置后端校验逻辑,核心原因是当前安装的依赖版本完全不兼容:
- 安装的
djongo==1.3.6最高仅支持Django 3.2及以下版本,无法适配当前环境的Django 4.0.5 - 安装的
pymongo==4.1.1版本过高,Djongo 1.3.6仅适配pymongo 3.x系列版本,4.x版本的接口变动会直接导致导入失败 - 同时安装了
djongo和django-mongoengine/mongoengine两套独立的MongoDB对接方案,混装容易出现模块导入冲突
修复步骤
按顺序操作即可解决:
- 先卸载所有冲突的依赖,在激活的虚拟环境中执行命令:
pip uninstall -y Django djongo pymongo django-mongoengine mongoengine
- 选择以下两套适配方案中的一种安装对应依赖,禁止两套混装:
方案1:使用Djongo(兼容Django原生ORM操作逻辑)
安装版本互认的依赖包:
pip install Django==3.2.19 djongo==1.3.6 pymongo==3.12.3
安装完成后检查settings.py中的数据库配置,ENGINE字段必须正确填写:
DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': '你的MongoDB数据库名', 'CLIENT': { 'host': 'mongodb://localhost:27017/' # 替换为实际的MongoDB连接地址 } } }
方案2:使用MongoEngine(原生MongoDB驱动,不依赖Django ORM)
如果不需要用Django ORM操作MongoDB,可以选这套方案,无需安装Djongo:
pip install Django==4.0.5 mongoengine==0.24.1 django-mongoengine==0.5.4
该方案不需要将MongoDB配置到DATABASES节点,直接在settings.py中添加MongoDB连接参数,在项目根目录的__init__.py中初始化连接即可。
3. 依赖安装完成、配置核对无误后,先执行python manage.py check确认无模块导入错误,再执行迁移相关命令。注意之前使用的runmigrations不是Django合法命令,迁移的正确命令为:
# 生成迁移文件 python manage.py makemigrations 你的应用名 # 执行迁移写入数据库 python manage.py migrate
额外排查项
如果按上述步骤操作后仍报错,先在虚拟环境中打开Python交互终端,手动执行import djongo查看具体的导入报错信息针对性处理:
- 如果提示sqlparse相关错误,是当前安装的
sqlparse==0.2.4版本过低,执行pip install sqlparse==0.4.4升级即可 - 如果提示模块找不到,检查项目目录下是否存在命名为
djongo.py的文件或者名为djongo的文件夹,这类重名文件会覆盖第三方包的导入路径,重命名即可。
内容的提问来源于stack exchange,提问作者def init
相关产品推荐
相关产品推荐

