簡體   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