python - 哪个 Python API 应该与 Mongodb 和 Django 一起使用

在与 Mongo 交互时,我一直在反复讨论使用哪个 Python API。我对环境进行了快速调查,并确定了三位主要候选人。

  • PyMongo
  • MongoEngine
  • Ming

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

MongoEngine 看起来像是专门为 Django 构建的。 PyMongo 似乎是 Mongo 的一个薄包装。它具有强大的功能,尽管失去了通过使用 django 作为框架获得的许多抽象。 Ming 代表了 PyMongo 和 MongoEngine 之间有趣的中间地带,虽然我还没有机会试驾它。

最佳答案

正如 Mike 所说,您无法避免 PyMongo - 所有其他接口(interface)都建立在它之上。这些其他接口(interface)可以说是不必要的。 Django 中使用的 ORM 在处理 SQL 时很有用,因为它们减轻了创建 SQL 查询和模式以及将结果集解析为对象的复杂性。

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

还剩下什么?模式创建和迁移有些用处,但几乎都是临时完成的——如果您正在考虑使用 MongoDB,那么您可能无论如何都想打破传统的 SQL 样式模型。此外,如果有一个完全兼容 Django 的 MongoDB ORM,您可能会从中获得一些好处。低于此值的任何内容,您都可能会为自己创造工作。

你不会后悔直接使用 PyMongo。

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

https://stackoverflow.com/questions/2740837/

相关文章:

node.js - Mongoose 'static' 方法与 'instance' 方法

node.js - 判断预保存回调中是否有记录 "is new"

.net - 我应该使用哪个 NoSQL 数据库进行日志记录?

node.js - MongoDB Node 检查objectid是否有效

c# - 支持和反对从 SQL Server 迁移到 MongoDB 的原因

mongodb - 如何发现 mongodb 数据库结构

MongoDB - $size 的参数必须是一个数组,但类型为 : EOO/missing

mongodb - 对 MongoDB $in 查询的响应顺序?

mongodb - 所以......这个NoSQL的东西

mysql - 何时使用 MongoDB