繁体   English   中英

在代码中使用没有 UID 和 PWD 的 HDODBC 驱动程序连接到 SAP HANA

[英]Connect to SAP HANA by using HDODBC driver without UID and PWD in code

我正在尝试通过 Python 代码连接到 SAP HANA 数据源。 我确实设法建立了连接。 我的代码中有一个原始数据字符串,如下所示:

db = pyodbc.connect(driver = '{HDBODBC}', UID='username', PWD='password', SERVERNODE='server:<port_no>')

但是,我不希望字符串中包含 UID 和 PWD 字段。 我确实使用 Windows 上的 ODBC 管理器设置了 DSN 连接。 但是,我仍然需要输入我的用户名和密码,如下所示:

db = pyodbc.connect(DSN="MyDSN", UID='username', PWD='password')

如何在 python 代码中不显示我的 UID 和 PWD 的情况下设置连接?

我一直在寻找将hdbuserstore密钥与python一起使用以连接到SAP HANA的选项。 看起来HDB客户端hdbcli现在已添加了该选项。

运行脚本的用户需要有PYTHON_PATH设置到的位置hdbclient或者你可以有路径设置脚本。

from hdbcli import dbapi

conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)

如果连接成功, conn.isconnected()将返回True。

希望这对某人有帮助!

例如,在安全的地方创建文件并从该文件加载连接设置(UID,PWD加密密码(heshkod))

此要求相对容易实现。 SAP HANA客户端软件(该软件包还包含ODBC驱动程序)提供了一个程序来为登录数据设置安全存储: hdbuserstore

我的博客中,我详细解释了它的工作原理。

核心步骤是

  1. 为应使用该应用程序的操作系统用户创建hdbuserstore条目。

     Syntax: hdbuserstore SET <KEY> <ENV> <USERNAME> <PASSWORD> Example: hdbuserstore SET millerj "localhost:30115" JohnMiller 2wsx$RFV 
  2. 必须在ODBC连接中引用hdbuserstore密钥。 为此,请使用@<KEYNAME>而不是实际服务器地址填​​充SERVERNODE参数。
    对于上面的示例,该值为@millerj

这就是全部。 ODBC驱动程序将尝试查找连接时提供的hdbuserstore条目,并使用该条目连接到数据库。

有关更多信息,请查阅文档

小心参数 CONNECTTIMEOUT=5。

from hdbcli import dbapi
conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)

这意味着不是 5 秒,因为它以毫秒为单位。 花了我很长时间才发现这个问题。

  • connectTimeout,以毫秒为单位的超时时间
  • 0(使用系统的 TCP/IP 套接字连接超时)
  • 在指定的超时后中止连接尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM