0

我最近发现了PyKE,并注意到给定的潜在用途示例之一(实际上,它最初的用途)是编译 SELECT 语句以查询数据库,并将结果映射到字典。作者强调这不是一个ORM。

由此,我有两个子问题:

  1. PyKE(或另一个能够执行或发出代码或返回结构化数据以供调用程序使用的专家系统)的使用如何不是有效的 ORM?
  2. 在什么情况下最好使用专家系统(例如 PyKE)来查询数据库,而不是专门构建的 ORM?鉴于 PyKE 是为此目的而制作的,我认为肯定有一些。
4

1 回答 1

2

对于你的第一个问题

ORM 是您的逻辑和数据之间的一层,将一个映射到另一个。关系数据库通常不会以对象使用数据的方式存储数据,因此 ORM 旨在抽象出编写 SQL 以将数据从一种表示形式转换为另一种表示形式所需的心理体操。(恕我直言,他们往往做得不好或效率不高)

特别是对于 PyKE,一方面提供 SELECT 编译,但显然不提供 CRUDing(CRUD:创建、读取、更新、删除),这是 ORM 所做的最重要的事情。

关于第二个问题

当您可能需要知识引擎(例如自然语言数据搜索)时,将使用 PyKE。那么 PyKE 可能知道如何以最有效的方式从数据库中提取数据来完成自己的目标。

另一方面,ORM 将获得代表程序中某个对象的数据,例如来自网站的采购订单,它会在创建 PO 时插入该对象,当出现会话被恢复,在用户向 PO 添加和删除项目时更改数据,并在购买完成或中止 (CRUD) 时删除 PO。


tldr

PyKE 是一个专门的库,它抽象出一些编写 SQL 以使用该库的需要,但不提供一套完整的 DB 交互,因为这不是它的构建目的。

ORM 确实提供了与 DB 的这种交互,并试图以一种非常动态的方式更容易地使用数据;尽管根据我的经验,使用/不使用 ORM 而不是手工制作的 SQL 引发了一些非常激烈的争论。

于 2016-09-15T12:29:22.447 回答