PyHDB 和来自 HANA 客户端的 hdbcli python 包有什么区别?

What are the differences between PyHDB and the hdbcli python package from the HANA client?

为了在 python 中使用 HANA,我一直使用 HANA 客户端附带的非常旧的 python 2.6.4。也有 ways to get it working 和其他 python 版本,但它们似乎非常老套。

现在我发现了非常有前途的 PyHDB project on Github,它似乎可以更轻松地完成相同的工作,并且也可以使用较新的 Python 版本。

哪些功能不适用于与 HANA 一起工作的 PyHDB python?

是否存在性能缺陷?


编辑:

这是我使用 module globals 发现的:

PyHDB is the younger brother of the node-hdb, both implementing the same protocol 作为基于 ODBC 的 Python 包 hdbcli。 hdbcli Python 客户端是标准 HANA 安装的一部分,但据我所知,它不属于用于构建 HANA 应用程序的官方支持接口列表。 因此,构建 PyHDB 的方向不是 hdbcli 客户端,而是上述协议规范和现有的 node-hdb 实现。

因此,详细的 hdbcli/PyHDB 交叉比较目前不可用,但查看 PyHDB 和 node-hdb 的协议规范和自述文件有助于深入了解连接器的功能和规范的当前覆盖范围实施。

在hdbcli、node-hdb和PyHDB这三个HANA连接器中,PyHDB是最年轻的,提供atm。最少的特性和功能,缺少 node-hdb 中已经可用的一些特性,例如身份验证方法或准备好的语句。查看 node-hdb 源代码有助于粗略估计在 Python.

中构建相同内容所需的工作量

PyHDB 并没有等待协议的全面覆盖,这可能需要一段时间,而是发布了 "as is",而是开放接收来自项目的输入和需求,并提供这方面的新功能。

目前没有发现性能缺陷。

也许在这里值得一提的是,通过 SAP RFC 协议,通过 PyRFC and node-rfc connectors, which are counterparts of standard ABAP RFC 连接器,也可以使用 ABAP 直接连接 Python 和 nodejs(GO 应该很快就会出现) Java 和 .NET 也是如此。

这里更新了当前情况:

  • pyhdb 支持 Python 2.7、3.3、3.4、3.5 以及 Linux、OSX 上的 PyPy 和 Windows.
  • hdbcli 支持 python 2.7 和 python 3.4+,并且得到 SAP 的完全支持和推动。

关于性能:

  • executemany 比 hdbcli 快一个数量级

以下博客 post 包含一些进一步的信息:

https://blogs.sap.com/2017/07/26/sap-hana-2.0-sps02-new-feature-updated-python-driver/

pyhdb 已于 2021 年 5 月弃用,不再维护。您会发现其 GitHub 存储库已存档 (https://github.com/SAP-archive/PyHDB) 并且处于只读模式。 SAP 维护者 @bsrdjan 关闭了所有未解决的问题和拉取请求。 hdbcli 现在是推荐的 Python 包,用于与 SAP HANA 数据库交互,尽管它是封闭源代码且文档较少。

我建议使用 sqlalchemy-hana,它是 SAP HANA 数据库的 SQLAlchemy 方言。它可以使用 hdbclipyhdb 对配置进行一行更改,因此您无需查找数据库驱动程序文档。