[英]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
。
在我的博客中,我詳細解釋了它的工作原理。
核心步驟是
為應使用該應用程序的操作系統用戶創建hdbuserstore
條目。
Syntax: hdbuserstore SET <KEY> <ENV> <USERNAME> <PASSWORD> Example: hdbuserstore SET millerj "localhost:30115" JohnMiller 2wsx$RFV
必須在ODBC連接中引用hdbuserstore
密鑰。 為此,請使用@<KEYNAME>
而不是實際服務器地址填充SERVERNODE
參數。
對於上面的示例,該值為@millerj
。
這就是全部。 ODBC驅動程序將嘗試查找連接時提供的hdbuserstore
條目,並使用該條目連接到數據庫。
有關更多信息,請查閱文檔 。
小心參數 CONNECTTIMEOUT=5。
from hdbcli import dbapi
conn = dbapi.connect(key='hdbuserstore key',CONNECTTIMEOUT=5)
這意味着不是 5 秒,因為它以毫秒為單位。 花了我很長時間才發現這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.