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

Python 专家系统(用于数据库访问)与ORM,python,orm,language-agnostic,expert-system,pyke,Python,Orm,Language Agnostic,Expert System,Pyke,我最近发现,并注意到一个潜在用途的给定示例(实际上,它最初构建的用途)是编译SELECT语句来查询数据库,并将结果映射到字典。作者强调,这不是ORM 由此,我有两个子问题: PyKE(或另一个能够执行或发出代码或返回结构化数据供调用程序使用的专家系统)的使用如何不是有效的ORM 在什么情况下,最好使用专家系统(如PyKE)来查询数据库,而不是专门构建的ORM?我想肯定有一些,因为派克就是为了这个目的而做的 关于你的第一个问题 ORM是逻辑和数据之间的一个层,将一个映射到另一个。关系数据库通常不会

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

由此,我有两个子问题:

  • PyKE(或另一个能够执行或发出代码或返回结构化数据供调用程序使用的专家系统)的使用如何不是有效的ORM
  • 在什么情况下,最好使用专家系统(如PyKE)来查询数据库,而不是专门构建的ORM?我想肯定有一些,因为派克就是为了这个目的而做的
  • 关于你的第一个问题 ORM是逻辑和数据之间的一个层,将一个映射到另一个。关系数据库通常不会以对象使用数据的方式存储数据,因此ORM旨在抽象出编写SQL所需的心理练习,以便将数据从一种表示转换为另一种表示。(依我看,他们往往做得不好或效率不高)

    特别是对于PyKE,它提供了选择编译,但不提供明显的CRUD(CRUD:Create、Read、Update、Delete),这是ORM所做的最重要的事情

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

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


    tldr

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

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

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

    特别是对于PyKE,它提供了选择编译,但不提供明显的CRUD(CRUD:Create、Read、Update、Delete),这是ORM所做的最重要的事情

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

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


    tldr

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


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

    但是。。。它能够编译SELECT语句,将它们发送到数据库,等等。在给定适当的规则/计划的情况下,它不也能够编译和运行其他完整CRUD语句吗?或者,如果你只需要以只读方式使用数据库,那么你只需要选择,为什么ORM更适合这项工作(如果可以的话)?因此,我认为如果你设置得恰到好处,你可以让它做你想要的事情;但在我看来,你是在用凿子当螺丝刀。如果您的问题类似于“我正在以某种方式使用此库,我能否将其用于其他用途,而不是导入另一个库”,那么。。。你可能会,但我可能不会。但是。。。它能够编译SELECT语句,将它们发送到数据库,等等。在给定适当的规则/计划的情况下,它不也能够编译和运行其他完整CRUD语句吗?或者,如果你只需要以只读方式使用数据库,那么你只需要选择,为什么ORM更适合这项工作(如果可以的话)?因此,我认为如果你设置得恰到好处,你可以让它做你想要的事情;但在我看来,你是在用凿子当螺丝刀。如果您的问题类似于“我正在以某种方式使用此库,我能否将其用于其他用途,而不是导入另一个库”,那么。。。你可能会,但我可能不会。