MongoDB和Djang应该使用哪个PythonAPI

2024-05-14 19:14:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在反复讨论在与Mongo交互时使用哪个Python API。我做了一个快速的景观调查,确定了三个主要的候选人。

如果您正在使用django框架设计一个新的内容繁重的网站,您会选择什么API,为什么?

MongoEngine看起来是专门为Django设计的。PyMongo似乎是Mongo的一个薄包装。它有很大的能力,尽管失去了很多通过使用django作为框架获得的抽象。明明代表了PyMongo和MongoEngine之间一个有趣的中间地带,尽管我还没有机会试驾。


Tags: django框架api内容网站mongo代表能力
3条回答

MongoEngine和Ming都依赖于Pymango——他们只是在上面添加了一些不错的功能。我建议您至少直接启动w/PyMongo——这样,如果您决定使用其他工具之一并遇到问题,就很容易理解“幕后”发生了什么。也就是说,我有很大的偏见;)。

我一直在和Mongokit一起工作。到目前为止。

这是一张blog post I referenced when integrating with Django

正如Mike所说,你不能避免PyMongo——所有其他接口都是在它之上构建的。这些其他接口可以说是不必要的。像Django中使用的ORMs在处理SQL时非常有用,因为它们减少了创建SQL查询和模式以及将结果集解析为对象的复杂性。

然而,PyMongo已经有了覆盖查询通过一个方便而简单的API,并且MongoDB的结果在定义上已经是对象(好吧,Python中的dict-相同的区别)。如果你觉得你真的需要用Python对象来装饰你的Mongo文档,那么很容易在PyMongo中添加一个子操纵器。这种方法的好处是,您可以直接在PyMongo上编写代码,然后滑入其他功能,而无需在代码和PyMongo之间插入新的API。

还剩什么?模式创建和迁移有些用处,但几乎都是即席完成的—如果您考虑使用MongoDB,那么很有可能无论如何都要打破传统的SQL样式模型。另外,如果有一个完全兼容Django的MongoDB ORM,您可能会从中获得一些好处。如果不是这样,你很可能会为自己创造工作。

你不会后悔直接用了皮蒙戈。

如果您对最高效率感兴趣,最后一个值得关注的选项是PyMongo的异步版本,这里是:http://github.com/fiorix/mongo-async-python-driver

相关问题 更多 >

    热门问题