当前位置: 首页 > 面试题库 >

Mongo DB和Django应该使用哪种Python API

邵阳辉
2023-03-14
问题内容

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

  • PyMongo
  • mongoengine

如果您要使用django框架设计一个新的内容丰富的网站,那么您将选择哪种API,为什么选择?

MongoEngine看起来是专门为Django而设计的。PyMongo似乎是围绕Mongo的薄包装。它具有强大的功能,尽管失去了许多使用django作为框架获得的抽象。Ming代表了PyMongo和MongoEngine之间一个有趣的中间地带,尽管我没有机会将其用于试驾。


问题答案:

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

但是PyMongo已经涵盖了这一点-查询通过便捷,简单的API进行,并且MongoDB的结果在定义上已经是对象(嗯,Python中的字典-
相同)。如果您确实需要使用Python对象装饰Mongo文档,则可以轻松地向PyMongo添加SON操作器。这种方法的好处是,您可以直接在PyMongo上编写代码,以后再滑动其他功能,而不必在代码和PyMongo之间插入新的API。

还剩啥?模式创建和迁移在某种程度上很有用,但是几乎是临时完成的-
如果您正在考虑使用MongoDB,您可能还是想摆脱传统的SQL风格模型。另外,如果有一个完全兼容Django的MongoDB
ORM,您可能会从中受益匪浅。除此之外,您可能会自己创建工作。

您将不会后悔直接使用PyMongo。

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



 类似资料:
  • 问题内容: 我正在尝试决定要选择哪种mime类型来返回mp3数据(由php提供) 根据此mime类型列表:http : //www.webmaster-toolkit.com/mime-types.shtml 这些之间有什么区别,我应该使用哪个? 问题答案: 最好的选择是使用RFC定义的 mime-type 。

  • 在读取包含右双引号 Unicode 符号的文件时,我遇到异常。它以 UTF-8 (0xE2 0x80 0x9D) 编码。最小的例子: 即使右引号不在第一行,该脚本也无法读取第一行。异常看起来是这样的: 输入文件是utf-8编码的,我尝试过使用和不使用BOM。是utf-8。 此脚本在使用Python 3.6.5的机器上失败,但在另一台使用Pythin 3.6.0的机器上运行良好。这两台机器都是Win

  • 问题内容: 我在某处读到该函数将空字符串视为,因此这不是从HTML表单验证文本输入和文本框的有效方法。 因此,您可以用来检查用户是否键入了某些内容。 函数将空字符串视为是真的吗? 那我应该在什么情况下使用呢?我应该经常检查是否有东西吗? 例如代替 使用这个 问题答案: isset vs.!empty 自由贸易协定: “ isset()检查变量的值是否包含(False,0或空字符串),但不包含NUL

  • 我正在使用Google App Engine灵活地部署我的Spring Boot应用程序。我看到配置可以由app.yaml或appengine-web.xml指定。不过,我的问题是, 我应该为Spring Boot应用程序使用哪个配置文件,yaml还是XML? 如果是xml,我是否应该创建web/web-inf/folder并将appengine-web.xml放置在其中? 另外,如果xml,如何

  • 问题内容: 我已经看到以下内容: AngularJS文档也提到了这一点,我不太了解。 这些方法之间有什么区别吗?特别是Angular文档的最后一种方法是做什么的?一个比另一个更好用吗? 问题答案: 它们大致相同,但有一些区别: 如果您 在页面末尾 (而不是在标题中)加载 了 脚本,这将起作用。 否则,在引导应用程序时将不会加载DOM(不会编译任何模板,指令不会有任何效果)。 此作品:plnkr 这

  • 我已经将ViewPager和number of Fragment实现为子级,这里每个子级都覆盖自己的。 在我的应用程序中,导航行为是随机的,不是每次都有顺序。因为页面查看器执行缓存来加载额外的子级,这就是我的问题所在。我不确定何时应该初始化/释放子类成员。 需要你们的建议,在这种情况下使用PageViwer是否更好,或者我应该为每个组件使用传统的活动流。

  • 问题内容: 我应该使用哪种PostgreSQL列类型来存储Java BigDecimal? 问题答案: 请参见PostgreSQL数据类型 -也许是Numeric,它可以充当 任意精度类型 (这是PostgreSQL扩展)。 …没有任何精度或小数位数,会创建一列,其中可以存储任何精度和小数位数的数值,但不超过精度的实施限制。 不过,我并不完全确定“精确度的实现限制”是什么。从来没有尝试过 真正的

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我正在重写一个项目以使用Node.js。我想继续使用MySQL作为数据库(即使我不介意重写架构)。我正在寻找一种易于使用,性能合理的ORM,它支持缓存,多对一