专家系统(用于数据库访问)与 ORM

Expert system (used for database access) vs. ORM

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

据此,我有两个子问题:

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

第一个问题

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

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

关于第二个问题

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

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


tldr

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

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