35

可以使用 Python 查询 SAP 数据库吗?

4

7 回答 7

25

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 ServicePython.

借助 SAP NetWeaver,开发人员可以连接应用程序和数据源,以使用 Web 服务集成流程。

特别是,开发人员可以使用一个基础架构以基于行业标准的方式定义、实现和使用 Web 服务。SAP NetWeaver 支持同步、异步、有状态和无状态 Web 服务模型——使开发人员能够支持不同的集成方案。

sapnwrfc支持此SAP NetWeaver功能,取代旧的 RFC SDK,并得到积极维护。

于 2009-09-23T16:24:26.370 回答
17

Python RFC 连接器现在可作为开源使用:PyRFC

于 2012-10-29T18:14:39.923 回答
6

SAP 现在有一个名为 pyrfc 的 Python RFC 连接器。这取代了 sapnwrfc。

这可以在以下位置找到:https ://github.com/SAP/PyRFC

“pyrfc Python 包为 SAP NetWeaver RFC 库提供 Python 绑定,以便通过 SAP 远程函数调用 (RFC) 协议以舒适的方式从 Python 调用 ABAP 模块和从 ABAP 调用 Python 模块。”

于 2015-07-08T18:19:44.947 回答
5

如果您正在谈论(过去被命名为)SAP Database AKA SapDb,现在是MaxDB(一段时间也由 MySql Inc 分发,现在再次由 SAP 分发——因此命名为SAP MaxDB),它带有几个 Python 访问模块,在此处记录。

这是我可以附加到“SAP 作为数据库引擎”的唯一含义——您想要访问 SAP MaxDB。其他答案做出不同的假设,并且(我相信)也是正确的......在这些不同的假设下。

于 2009-09-23T20:45:05.767 回答
4

SAP 不是数据库服务器。但是使用 Python SAP RFC 模块,您可以很容易地查询大多数表。它正在使用一些 sap 不受支持的功能(全世界都在使用)。而且这个函数对字段大小和数据类型有一些限制。

于 2009-09-23T18:49:28.370 回答
2

如上所述,当您只想读取表或进行 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),一旦您在启用远程功能的功能模块中拥有业务逻辑,创建自己的服务实际上非常简单。

于 2009-10-06T09:35:18.650 回答
1

Python 是最常用的面向对象编程语言之一,它非常易于编码和理解。

为了在 SAP 中使用 Python,我们需要安装 Python SAP RFC 模块,即 PyRFC。它的一种可用方法是 RFC_READ_TABLE,可以调用它从 SAP 数据库中的表中读取数据。

此外,PyRFC 包提供了各种绑定,可用于以任何一种方式进行调用。我们可以用来从 ABAP 模块调用 Python 模块,或者反过来。可以定义用于数据交换的等效 SAP 数据类型。

此外,我们可以在 Python 中创建可用于相互通信的 Web 服务。SAP NetWeaver 与有状态或无状态的 Web 服务完全兼容。

于 2019-12-06T09:40:13.467 回答