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

时间:2017-08-24 15:02:57

标签: python odbc pyodbc hana

我正在尝试通过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')

如何在没有我的UID和PWD显示在python代码中的情况下建立连接?

3 个答案:

答案 0 :(得分:2)

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

运行脚本的用户需要将PYTHON_PATH设置为hdbclient的位置,或者在脚本中可以设置路径。

from hdbcli import dbapi

conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)
如果连接成功,

conn.isconnected()将返回True。

希望这对某人有帮助!

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

my blog中,我详细解释了它的工作原理。

核心步骤是

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

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

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

    检查the documentation以获取更多相关信息。