使用代码中没有 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 的情况下建立连接?
例如在安全的地方创建文件并从此文件加载连接设置(UID、PWD 加密密码 (heshkod))
这个要求比较容易实现。
SAP HANA 客户端软件(也包含 ODBC 驱动程序的软件包)提供了一个程序来为登录数据设置安全存储:hdbuserstore
.
在 my blog 中,我详细解释了它是如何工作的。
核心步骤是
为应使用该应用程序的操作系统用户创建 hdbuserstore
条目。
Syntax: hdbuserstore SET <KEY> <ENV> <USERNAME> <PASSWORD>
Example: hdbuserstore SET millerj "localhost:30115" JohnMiller 2wsx$RFV
ODBC连接中需要引用hdbuserstore
键。
为此,请将 SERVERNODE
参数填入 @<KEYNAME>
而不是实际的服务器地址。
对于上面的示例,该值为 @millerj
.
仅此而已。 ODBC 驱动程序将尝试查找连接时提供的 hdbuserstore
条目,并使用它连接到数据库。
查看 the documentation 了解更多信息。
我一直在寻找相同的选项来使用 hdbuserstore 密钥与 python 一起用于连接到 SAP HANA。看起来 HDB 客户端 hdbcli 现在添加了该选项。
作为 运行 脚本的用户需要将 PYTHON_PATH 设置为 hdbclient
的位置,或者您可以在脚本中设置路径。
from hdbcli import dbapi
conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)
如果连接成功,conn.isconnected()
将 return 为真。
希望这对某人有帮助!
注意参数 CONNECTTIMEOUT=5。
from hdbcli import dbapi
conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)
这意味着不是 5 秒,因为它以毫秒为单位。找了好久才发现这个问题。
- connectTimeout,以毫秒为单位的超时
- 0(使用系统的TCP/IP套接字连接超时)
- 在指定的超时后中止连接尝试。
我正在尝试通过 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 的情况下建立连接?
例如在安全的地方创建文件并从此文件加载连接设置(UID、PWD 加密密码 (heshkod))
这个要求比较容易实现。
SAP HANA 客户端软件(也包含 ODBC 驱动程序的软件包)提供了一个程序来为登录数据设置安全存储:hdbuserstore
.
在 my blog 中,我详细解释了它是如何工作的。
核心步骤是
为应使用该应用程序的操作系统用户创建
hdbuserstore
条目。Syntax: hdbuserstore SET <KEY> <ENV> <USERNAME> <PASSWORD> Example: hdbuserstore SET millerj "localhost:30115" JohnMiller 2wsx$RFV
ODBC连接中需要引用
hdbuserstore
键。 为此,请将SERVERNODE
参数填入@<KEYNAME>
而不是实际的服务器地址。
对于上面的示例,该值为@millerj
.
仅此而已。 ODBC 驱动程序将尝试查找连接时提供的 hdbuserstore
条目,并使用它连接到数据库。
查看 the documentation 了解更多信息。
我一直在寻找相同的选项来使用 hdbuserstore 密钥与 python 一起用于连接到 SAP HANA。看起来 HDB 客户端 hdbcli 现在添加了该选项。
作为 运行 脚本的用户需要将 PYTHON_PATH 设置为 hdbclient
的位置,或者您可以在脚本中设置路径。
from hdbcli import dbapi
conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)
如果连接成功,conn.isconnected()
将 return 为真。
希望这对某人有帮助!
注意参数 CONNECTTIMEOUT=5。
from hdbcli import dbapi
conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)
这意味着不是 5 秒,因为它以毫秒为单位。找了好久才发现这个问题。
- connectTimeout,以毫秒为单位的超时
- 0(使用系统的TCP/IP套接字连接超时)
- 在指定的超时后中止连接尝试。