2012-04-20 72 views
9

我在寻找MondoDB Python ODM/ORM,它需要两个世界上最好的:ODM/ORM &超快直接字典读取。用于Python的轻量级Mongodb ODM/ORM

换句话说包应符合下列要求:

  1. 允许定义和执行模式。
  2. 允许验证字段。
  3. 允许直接从mongodb读取对象(无ODM/ORM开销)。
    • 类别/对象直接返回通过pymongo可使用ODM/ORM层(W/O额外的查询)来访问。
    • 我会想象某种由pymongo司机对象,提供了访问ORM汁加懒场(pymongo允许这样的扩展)。
    • 想象一下用例:
      • 对于快速阅读,我们直接去驱动,
      • 进行数据录入,我们使用全ODM/ORM功能
  4. Geofields支持
  5. GridFS的支持正常的文件和图像
  6. DBREF支持
  7. 不执行任何HID书房,框架的具体领域
  8. 将与瓶工作:)
  9. 拥有表单框架。
    • 形式覆盖子列表/ subdicts
    • 骨干基于表单将只是真棒
  10. 创建骨干机型,集合,验证基于Python的定义

我知道,我所要求的很多,但不会是真棒有这样的东西:)

事实上,问题可以改写成: “哪些存在Python Mongodb ODM/ORM(MongoKit,MongoEngine)可以通过这种方式轻松扩展。“

回答

3

那么,如果你需要一个ORM你需要的不是一个ORM,因为MongoDB是不是一个关系数据库,所以没有映射到关系实体做的理论。

我认为您必须检查this post的答案以检查是否您所需要的建议,我个人直接使用MongoDB + Python,因为Mongo和Python的“本质”。

环顾四周,我发现这个库,可以帮助你mongoEngine。就像Django ORM一样。你应该检查它。

+0

不深入细节mongo支持引用,所以我们有一个非常基本的关系数据库子集。为了正确性,我们可以通过ODM/ORM来引用。直接访问pymongo非常好。一段时间以来我一直在倾向于这种方式。 MongoEngine太重了。 MongoKit也一样。如果只有我能找到一种方法在已经加载的列表中使用它们,它们就可以。顺便说一句:http://packages.python.org/micromongo/并不差,但仍然不是我正在寻找的东西。 – Munhitsu 2012-04-21 00:07:53

+0

那么,当您使用ORM或ODM时,您知道这将不如直接使用数据库连接那么轻。所以,我的建议是直接从Python中使用,你说的很好,只是起作用。 – Omar 2012-04-24 23:03:16

6

首先,我很想拥有它。

根据我的研究

铭是一个非常有前途的蒙戈ODM驱动程序:http://merciless.sourceforge.net/

MongoEngine太大修改它以适应您的需求/用例。 MongoKit也一样。

有一些希望在micromongo:http://packages.python.org/micromongo

可能是一个很好的起点。

BTW:嗯......我不知道你在写什么,但其覆盖,你可以很容易地建立管理界面,并最终达到其下一代Django表单和验证。祝你好运!

+0

显然,micromongo自2012年以来一直未动。但是,有一个新的ODM即将到来:[umongo](http://umongo.readthedocs.io/en/latest/)。它不像问题中所要求的那样功能全面,但它比MongoEngine更简单,所以您可以更轻松地构建它。 – 2016-11-29 09:01:42

1

umongo出生久,有人问了。虽然相对年轻,但它正在成熟。像micromongo一样,它的目标是简单(“u”代表μ/微),所以它不能提供问题中所要求的众多特性,但它是一个理想的基础。

它使用棉花糖内部的模型模式/验证,这样你就可以用棉花糖其他库愉快地使用它。我在Flask应用程序中使用它,它使用Marshmallow提供REST API来分析输入/输出。这限制了数据库和API模式之间的重复数量。该应用程序使用Marshmallow环境中的其他库(webargs/apispec)。

既然你已经收集直接访问,您可以使用纯pymongo查询。

而且,它不仅与pymongo也与异步驱动程序兼容。