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

时间:2015-03-02 14:37:59

标签: python hana

为了在python中使用HANA,我总是使用HANA客户端附带的旧版python 2.6.4。还有ways to get it working和其他python版本一样,但它们看起来非常h​​acky。

现在我已经找到了非常有前途的PyHDB project on Github,它似乎也可以更轻松地安装相同的工作并使用更新的Python版本。

哪些功能不适用于使用HANA python的PyHDB?

是否存在性能缺陷?


修改

以下是我使用module globals找到的内容:

  • PyHDB更加线程安全(线程可以在这里共享连接)
  • 参数样式不同(PyHDB:format; hdbcli:qmark, named

3 个答案:

答案 0 :(得分:3)

PyHDBnode-hdb的弟弟,两者都实现了与基于ODBC的Python包hdbcli相同的protocol。 hdbcli Python客户端是标准HANA安装的一部分,但据我所知,它不属于用于构建HANA应用程序的官方支持的接口列表。 因此,构建PyHDB的方向不是hdbcli客户端,而是上面提到的协议规范和现有的node-hdb实现。

因此,目前还没有详细的hdbcli / PyHDB交叉比较,但是查看协议规范和PyHDB的README以及node-hdb有助于深入了解连接器的功能以及两种实现的规范的当前覆盖范围。

在这三个HANA连接器中,hdbcli,node-hdb和PyHDB,PyHDB是最年轻的,提供atm。最少的特性和功能,缺少node-hdb中已有的一些功能,例如身份验证方法或预准备语句。查看node-hdb源有助于粗略估计在Python中构建相同内容所需的工作量。

PyHDB不是等待协议的完全覆盖(可能需要一段时间),而是“按原样”发布,但是可以接收来自项目的输入和要求,并在这个方向上提供新功能。

到目前为止没有发现性能缺陷。

或许值得一提的是,通过ABAP,通过SAP RFC协议,通过PyRFCnode-rfc连接器,也可以实现Python和nodejs(GO即将推出)的直接连接。 standard ABAP RFC连接器,也可用于Java和.NET。

答案 1 :(得分:3)

此处有关于当前情况的更新:

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

关于表现:

    使用hdbcli ,
  • executemany的速度提高了一个数量级

以下博客文章包含更多信息:

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

答案 2 :(得分:0)

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

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