可以使用 Python 查询 SAP 数据库吗?
7 回答
Python SAP RFC 模块似乎不活跃 -最后一次(无关紧要)提交2 年前 - 但可能会为您服务:
Pysaprfc 是 SAP librfc 的包装器(Windows 上的 librfc32.dll,Linux 上的 librfccm.so 或 librfc.so)。它使用 Thomas Heller 出色的 ctypes 扩展包来访问 librfc 并定义 SAP 兼容的数据类型。
现代 SAP 版本采用了这种Web Service
方式- 您可以SAP Web Service
从Python
.
借助 SAP NetWeaver,开发人员可以连接应用程序和数据源,以使用 Web 服务集成流程。
特别是,开发人员可以使用一个基础架构以基于行业标准的方式定义、实现和使用 Web 服务。SAP NetWeaver 支持同步、异步、有状态和无状态 Web 服务模型——使开发人员能够支持不同的集成方案。
Python RFC 连接器现在可作为开源使用:PyRFC
SAP 现在有一个名为 pyrfc 的 Python RFC 连接器。这取代了 sapnwrfc。
这可以在以下位置找到:https ://github.com/SAP/PyRFC
“pyrfc Python 包为 SAP NetWeaver RFC 库提供 Python 绑定,以便通过 SAP 远程函数调用 (RFC) 协议以舒适的方式从 Python 调用 ABAP 模块和从 ABAP 调用 Python 模块。”
SAP 不是数据库服务器。但是使用 Python SAP RFC 模块,您可以很容易地查询大多数表。它正在使用一些 sap 不受支持的功能(全世界都在使用)。而且这个函数对字段大小和数据类型有一些限制。
如上所述,当您只想读取表或进行 RFC 或 BAPI 调用时,可以将 CPython 与未维护的 Python SAP RFC 模块或 Piers Harding 的SAP RFC一起使用。仅读取表的 RFC 调用是 RFC_GET_TABLE_ENTRIES 或 RFC_READ_TABLE,前者是首选,但也不会发布给客户。
对于更正式的方式,您可以使用 SAP 的 JCO 连接器和 Jython 或 SAP 的 .Net 连接器和 Ironpython;这两个连接器都可以从 SAP 的服务市场下载,并且都允许调用 RFC 功能,包括上面列出的两个调用。
如上所述,SAP 提出的访问后端功能的方式是通过 SAP 庞大的 SOA 基础架构。在这里,您可以将 Jython 与 Axis 库或 Ironpython 与 Microsoft 的 WCF 一起使用。请注意,SAP 提供的服务显然不允许您访问普通表,而是您可以调用服务提供的内容。SAP 已经提供了大约 3.000 项服务(请参阅 SDN 上的 ES Wiki),一旦您在启用远程功能的功能模块中拥有业务逻辑,创建自己的服务实际上非常简单。
Python 是最常用的面向对象编程语言之一,它非常易于编码和理解。
为了在 SAP 中使用 Python,我们需要安装 Python SAP RFC 模块,即 PyRFC。它的一种可用方法是 RFC_READ_TABLE,可以调用它从 SAP 数据库中的表中读取数据。
此外,PyRFC 包提供了各种绑定,可用于以任何一种方式进行调用。我们可以用来从 ABAP 模块调用 Python 模块,或者反过来。可以定义用于数据交换的等效 SAP 数据类型。
此外,我们可以在 Python 中创建可用于相互通信的 Web 服务。SAP NetWeaver 与有状态或无状态的 Web 服务完全兼容。