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
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