将Django +1.10与MongoDB连接

时间:2017-02-11 16:12:32

标签: django mongodb orm

在过去几个月中,有人替换了MongoDB的Django(+ 1.1.10)中的默认数据库引擎吗?我在谷歌获得的所有信息都是6年或4年前的。

最常见的结果包括 mongodb-engine ,它需要 django-nonrel (来自Django 1.5的非常老的分支)或 mongoengine ,也是一个过时的库,它会产生很多错误,因此当你修补一个错误时,你会得到一个新错误。

我不知道是否有任何新的"实现这一目标的方法。

3 个答案:

答案 0 :(得分:4)

使用docker进行多次构建和测试以尝试不同的版本组合,我设法使用以下版本访问稳定且可用的Django MongoDB应用程序:

Django==1.10.0
pymongo==2.7.1
six==1.10.0
mongoengine==0.9.0

安装所需的库后,编辑您的settings.py以更新或添加以下内容

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.dummy'
    }
}
AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend',
)
from mongoengine import *
    connect('database_name', host='host_ip',  port=27017)

更改数据库名称和主机IP。如果没有声明ip,它会默认尝试连接到localhost。

现在,运行您的应用应该已连接数据库并准备使用。 检查mongoengine documentation以获取有关如何使用它的信息。

答案 1 :(得分:2)

有多种方法可以集成MongoDB和Django。根据您采取的策略,您可能会头痛或顺利航行!

作为Web开发人员,您可以通过两种方式应对将Django连接到MongoDB的挑战:

使用与MongoDB兼容的模型框架:在django项目中使用MongoEngine或Ming等第三方框架。但是会错过:

  • 该项目的1500多个核心贡献者,
  • 每小时修正和解决方案,
  • 减少现有Django模型的专业知识,并加强新模型框架。
  • 也许最大的缺点是你的项目不能使用任何Django的contrib模型!忘记为项目使用Admin,Sessions,Users,Auth等,contrib模块!

Django SQL到MongoDB转发器 - Djongo :策略是将Django ORM生成的Django SQL查询语法转换为pymongo命令。 Djongo是一个SQL to MongoDB查询编译器。它将每个SQL查询字符串转换为mongoDB查询文档。结果,

  • 所有Django模型和相关模块都按原样工作。
  • 使用Django Admin GUI添加MongoDB嵌入式文档。
  • Djongo为Django ORM提供了API扩展,让你可以将一个文档“嵌入”另一个文档,像一样

如果您正在寻找更多信息,请在Using Django with MongoDB上添加一行代码,只需添加一行代码即可。否则,您可以直接跳转到djongo documentation并开始使用它。

答案 2 :(得分:1)

查看https://djangopackages.org/grids/g/mongodb/,没有生产就绪的MongoDB库。除了你提到的那个之外还有其他一些软件包,比如https://github.com/jazzband/django-mongonaut,但它们都处于测试阶段,它们存在许多问题,并且它们不能与最新版本的Django一起使用