Django与NoSQL数据库

19

我正在使用一个使用Django 1.8版本Django应用程序。

我们处理的大多数数据都是JSON格式的。我们正试图实现任何NoSQL数据库。

但我发现MONGODB不兼容1.8以上版本,有没有任何可以有效映射到Django 1.8或更高版本的NoSQL数据库?

提前致谢。


NoSQL不受ORM支持,但您当然可以在其他Django功能中使用NoSQL,或与关系型数据库并用。您具体需要哪些功能? - knbk
我们从其他应用程序接收的数据都是纯JSON格式。这就是为什么我们想要包含Nosql数据库(mongo db)的原因。但是你提到的观点似乎是我们未来考虑的一个可能选项。谢谢。 - Bhargav
3个回答

15

Django本身不支持NoSQL数据库。但是有一些侧重于Django的项目和分支,提供了在Django中使用NoSQL功能的方法,例如Django non-rel

你还可以查看维基页面,其中讨论了一些替代方案。

这是引用自Django官方文档的内容。


但是它们都使用Django 1.5或更低版本 :( - Bhargav
请查看http://django-mongodb-engine.readthedocs.org/。这在Django 1.8和1.10的文档中被引用。 - Rahul Reddy Vemireddy
Django non-rel和Django-mongodb引擎运行不正常。第一个版本只有1.5,管理员界面无法工作。该项目似乎已经被放弃。目前最好的选择是使用DJONGO包,它可以在Python 3.5+和Django 1.11上正常工作。 - devnull

11

这里有一个有趣的存储库,可以让您将 MongoDB 作为 Django 后端使用。它通过将 SQL 命令编译成 MongoDB 文档查询来工作。

大多数基本内容,如 Django 管理员、Django 会话等都可以正常运行。

https://github.com/nesdis/djongo


谢谢,我会检查的。 :) - Bhargav
4
我刚刚尝试了几个选项,包括Django-nonrel和较旧的软件包。都没有很好地运作(特别是管理员部分)。Djongo表现非常出色,似乎是唯一一个现代化可行的解决方案。 - devnull
2
2020年更新:对于当前版本的Django来说,这似乎是最有效的选项,如果不是唯一的选项。 - Paul Bissex
Djongo也不太可能因为未来的Django更新而出现故障,因为它通过将SQL转换为Mongo的查询语言来工作。与其他项目(如non-rel)不同,Djongo非常适合Django现有的接口,这些接口是针对SQL后端设计的。 - bitoffdev

3
多年后(2022年),djongo 仍是唯一一个能够在NoSQL环境下与Django 3.0.x(带有一些约束限制)良好配合的选项。

但现在,随着Django 4.0.1主要版本的推出,djongo的最新版本1.3.6(根据pypi发布于2021年6月)开始出现问题。在我使用Django == 4.0.4和djongo == 1.3.6的经验中,几乎没有选择/更新查询工作,并且SQLDecodeError异常在控制台中出现。

djongo维护者还创建了付费订阅计划,但我不是他们这样的客户,因此无法对djongo的商业化版本发表评论。除此之外,开源AGPL许可的djongo是未付费开发人员使用Django与MongoDB的唯一最佳选择,前提是开发人员将自己限制在Django 3.0.x上。

具体来说,我一直在使用Django == 3.0.5和djongo == 1.3.6,它在大多数情况下都很好用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接