【问题标题】:Django 1.8 and MongoDB?Django 1.8 和 MongoDB?
【发布时间】:2015-08-27 17:46:50
【问题描述】:

这个问题已经在 StackOverflow 上问过了,

提出的问题可以追溯到 2013 年,现在是 2015 年,Django 发展迅速。

2015年的Django 1.8使用mongodb的情况如何?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    MongoEngine 是一个对象-文档映射器,用 Python 编写,用于 使用 MongoDB。

    您只需要使用 Django 配置 MongoEngine,然后它应该可以舒适地工作。

    【讨论】:

    • MongoEngine 好像需要 Django 1.6-nonrel,这是降级,缺乏官方支持
    • 不,Mongoengine 不需要 Django-nonrel 与它一起工作。你可以安装 Django、Mongoengine 和 pymongo,它应该适合你。我目前在一个项目中使用 Django (1.8.2)、mongoengine (0.10.0) 和 pymongo (3.0.3) 并且它运行良好。
    • @PeterGerhat 似乎指的是 django-mongodb-engine 它确实需要 nonrel req。旧版本的 [django] (django-mongodb-engine.readthedocs.org/en/latest/topics/…).. 看看 github 上的这两个,似乎 MongoEngine 将是要走的路..
    • 也就是说,MongoEngine 正在寻找雇佣人员来获得其遗产django plugin up to scratch 所以也许我说得太早了。
    【解决方案2】:

    只是我的想法,有些主观和固执己见,但我会说它效果不佳。我很快打消了尝试用 MongoDB 运行 Django 的想法,因为它的身份验证系统严重依赖关系数据库才能工作。

    显然有一些方法可以解决这个问题,但最终我决定对于我的项目来说,仅仅使用 MongoDB 是不值得的。

    【讨论】:

      【解决方案3】:

      Django 是否支持开箱即用的 Monogodb(带有 db 适配器)?

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

      好消息是有这样一个引擎,叫做django-mongodb-engine;坏消息是它依赖于django-nonrel,它没有针对 django 的最新稳定版本进行更新。

      所以,如果你必须 - 你可以使用 MongoDB,代价是没有一些更新的 django 功能可供你使用(更重要的是,任何安全补丁)。

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

      所以,总结一下:

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

      • 支持使用第三方django-nonrel 包,它落后于当前的django 生产版本。

      【讨论】:

        【解决方案4】:

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

        如上所述,mongoengine 并不支持 django 的所有 contrib 应用程序。尤其是 auth 应用程序在 mongoengine

        上不起作用

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-03
            • 2015-07-28
            • 2012-08-27
            • 1970-01-01
            • 2015-06-23
            • 2015-06-28
            相关资源
            最近更新 更多