Django 1.8和MongoDB?

时间:2015-08-27 17:46:51

标签: django mongodb django-nonrel django-1.8 non-relational-database

StackOverflow已经提出了这个问题,

问题可以追溯到2013年,现在2015年和Django已经快速成长。

截至2015年,使用mongodb与Django 1.8的情况如何?

Django是否支持开箱即用的Monogodb(使用数据库适配器)?还是应该使用像django-nonrel这样的其他发行版?

5 个答案:

答案 0 :(得分:3)

只是我的想法,有些主观和自以为是,但我会说它不能很好地工作。我迅速解散了尝试使用MongoDB运行Django的想法,因为它的auth系统严重依赖关系数据库来工作。

显然有办法解决这个问题,但最终我决定使用MongoDB并不值得我使用MongoDB。

答案 1 :(得分:3)

我不认为Django为MongoDB提供开箱即用的支持。它更适合关系数据库。

一种解决方案可能是使用MongoEngine.

  

MongoEngine是一个Object-Document Mapper,用Python编写   使用MongoDB。

您需要使用Django配置MongoEngine然后它应该可以正常工作。

答案 2 :(得分:2)

  

Django是否支持开箱即用的Monogodb(使用数据库适配器)?

不,它没有。如果你能找到mongodb的django兼容引擎,那么它将完美运行。

好消息是有一种名为django-mongodb-engine的引擎;坏消息是它依赖django-nonrel而不是针对最新稳定版本的django进行更新。

因此,如果必须 - 您可以使用MongoDB,但代价是没有可用的更新django功能(更重要的是,任何安全补丁)。

如果你想用mongodb 补充你的主数据库 - 也就是说,mongodb不是你的主数据库,那么这个过程就容易多了。

所以,总结一下:

  • django 1.8不提供对mongodb(或其他非关系数据库)作为主数据存储的开箱即用支持。

  • 使用第三方django-nonrel包提供支持,该包位于当前django生产版本的后面。

答案 3 :(得分:1)

我遇到了一个支持MongoDB上最新django的新软件包:djongo

如上所述,mongoengine不支持django的所有contrib应用程序。特别是auth应用程序无法处理mongoengine

Djongo声称将SQL查询编译成mongodb查询。所以它本质上是版本无关的,适用于所有版本的Django。

披露:我通过修复小错误为此包做出了贡献。

答案 4 :(得分:0)

我知道已经过去三年了,但是对于那些想知道MongoDB和Django的人来说,现在应该知道情况没有改变。如前所述,Mongoengine是一个足够好的工具,但仍然存在局限性。例如,当我使用mongoengine将mongodb与django集成时,我无法在我的应用程序中使用弹性搜索。此外,使用mongoDB会失去Django管理员和身份验证功能。因此,MongoDB和Django仍然是一个冒险的选择