【问题标题】:Django-nonrel vs Django-mongodb vs Mongokit vs pymongo nativeDjango-nonrel vs Django-mongodb vs Mongokit vs pymongo native
【发布时间】:2012-05-12 13:34:34
【问题描述】:

从事需要 NoSQL 存储的 Django 项目,我相信我已经选择了 Mongo。我见过很多谈论 Mongo 和 Django 的话题,但没有一个提到 Django-nonrel,我不明白为什么它可能会被取消资格,但我对其中任何一个都没有经验。

理想情况下,我想为简单的事情、用户身份验证、组等保留 SQL 存储,并将 Mongo 用于更大的数据。

我还希望将 Mongo 存储的对象作为类,采用 Django-ORM 样式,这样我就可以有类似的“感觉”,但这并不重要。

最后,以上任何一项是否允许我使用 Django 的多数据库支持来处理任何事情,或者我的所有 mongo 查询是否都有效地从 Django ORM“带外”?

如果我遗漏了任何其他可能很重要的因素,请随时提示我。我在这个领域知之甚少。

【问题讨论】:

  • 是的,可以使用 Django 和 MongoDB,几年前我自己也做过。我没有尝试过 Django-nonrel,但如果你想将 SQL 用于简单的事情,你应该坚持原来的 Django。你现在应该知道 Django 没有 Mongo 后端,但如果你想保留 Django ORM 感觉你真的应该尝试mongoengine
  • 我支持 mongoengine 的推荐。

标签: django mongodb pymongo django-nonrel mongokit


【解决方案1】:

Django-nonrel 是在 MongoDB 上使用 Django 的方式。有 django-mongodb.org,但它只是建立在 Django-nonrel 之上。 django-nonrel 邮件列表上有相当多的 mongodb 活动。

将您的 mongo 类存储为 Django ORM 对象可以正常工作,这就是重点。

我没有尝试将多数据库支持与 SQL 一起使用。我还没有看到很多人这样使用它,我怀疑它很可能不起作用。将 django-nonrel 正式作为 Django 1.4 的一部分有一些工作,我怀疑它会在完成后工作。

使用 django-nonrel 进行身份验证可以正常工作。主要问题是多对多关系。 auth 模块将其用于每个用户对象的权限——这是行不通的。如果您不需要它,您可能根本不使用 SQL 就可以逃脱。

【讨论】:

  • 我无法让 Django-nonrel 工作,尽管我遵循了各种文档来源。它“大部分”在那里,因为我有一个 Django 项目,我几乎什至可以让 syncdb 工作,但我得到的最好的结果是让它在它失败之前启动......废话,处理 ObjectID 的一些错误.简而言之,我最终使用了 mongoengine,它允许我在设置中指定连接以及定义我可以引用的“类 Django”类对象。您的回答没有“奏效”,但由于您抽出时间至少尝试了一下,我认为这是值得的,所以它被接受了。
【解决方案2】:

添加到dragonx的答案。 django-nonrel 的问题是 auth 模块不起作用。

您可以使用 $lookup 运算符执行多对多连接。 djongo 会自动为您服务。它将 SQL 语法转换为 mongodb 聚合查询并填充对象模型,就像其他 SQL 驱动程序一样。

auth 模块在 djongo 上运行良好

【讨论】:

    猜你喜欢
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2014-01-13
    • 2019-04-01
    • 2011-02-11
    • 2011-07-14
    • 2017-11-06
    相关资源
    最近更新 更多