哪个Python API应该与Mongo DB和Django一起使用

Tho*_*mas 47 python django mongodb

在与Mongo交互时,我一直在回顾使用哪个Python API.我对景观进行了快速调查,并确定了三位主要候选人.

如果您使用django框架设计一个新的内容丰富的网站,您会选择什么API以及为什么?

MongoEngine看起来像是专门为Django而构建的.PyMongo似乎是Mongo周围的薄包装.尽管通过使用django作为框架获得了大量的抽象,但它有很多功能.Ming代表了PyMongo和MongoEngine之间有趣的中间地带,尽管我还没有机会参加试驾.

drg*_*drg 56

正如迈克所说,你无法避免PyMongo - 所有其他接口都建立在它之上.这些其他接口可以说是不必要的.在处理SQL时,诸如Django中使用的ORM很有用,因为它们可以降低创建SQL查询和模式以及将结果集解析为对象的复杂性.

然而,PyMongo已经覆盖了 - 查询通过一个方便而简单的API,来自MongoDB的结果已经是对象(好吧,Python中的dicts - 相同的区别).如果您觉得确实需要使用Python对象装饰Mongo文档,则可以轻松地向PyMongo添加SON操纵器.这种方法的好处在于您可以直接在PyMongo上编写代码,稍后可以在其他功能中滑动,而无需在代码和PyMongo之间插入新的API.

还剩什么?模式创建和迁移有点有用,但几乎就像ad-hoc一样简单 - 如果你正在考虑使用MongoDB,你想要打破传统的SQL风格的模型.此外,如果有一个完全兼容Django的MongoDB ORM,你可能会获得一些里程数.任何不足之处,你可能会为自己创造工作.

你不会后悔直接使用PyMongo.

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

  • 您对异步(扭曲)驱动程序有任何个人经验吗?我想在Twisted应用程序中使用MongoDB并遇到它,但PyMongo文档指出[http://api.mongodb.org/python/current/faq.html?highlight=twisted#how-can-i-use -pymongo-with-an-asynchronous-socket-library-like-twisted](_这个项目目前不如PyMongo_稳定).这可能只是关于第三方开源项目的标准免责声明,但它也可能是真的...这就是为什么我正在寻找关于这个库的第一手评论...... (3认同)

Har*_*old 11

我一直在和Mongokit合作.喜欢到目前为止.

这是我在与Django集成时引用博客文章


mdi*_*olf 6

MongoEngine和Ming都依赖于PyMongo--他们只是在它上面添加了一些不错的功能.我建议至少直接启动w/PyMongo - 如果您决定使用其他工具之一并遇到问题,那么很容易理解"幕后"的内容.那就是说,我非常偏颇;).


小智 5

你可以尝试一下django-mongodb-engine.它是Django-nonrel的后端,所以你可以继续使用Django的模型和ORM.但它还没有其他API那么完整:http: //www.allbuttonspressed.com/blog/django/2010/05/MongoDB-backend-for-Django-nonrel-released