簡體   English   中英

無法從 python 連接到 Db2

[英]Cannot connect to Db2 from python

我使用pip install ibm_db ibm_db創建了一個包含以下內容的db2dsdriver.cfg文件:

<configuration>
  <dsncollection>
    <dsn alias="BANK0002" name="BANK0002" host="localhost" port="50000"/>
  </dsncollection>
  <databases>
    <database name="BANK0002" host="BANK0002" port="50000"/>
  </databases>
</configuration> 

運行此命令行,我可以連接數據庫並允許我運行 select 語句而沒有問題:

db2cli execsql -user DB2INST1 -passwd xxxxx -dsn bank0002

問題是我無法從 Python 連接:

conn = ibm_db.connect("UID=DB2INST1;PWD=xxxxxx;DATABASE=bank0002;
       HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;", "", "")

拋出:

SQLCODE=-30082n: [IBM][CLI Driver] SQL30082N 安全處理失敗,原因為“17”(“UNSUPPORTED FUNCTION”)。 SQLSTATE=08001

這是什么問題以及如何解決?

python -V
Python 3.8.5


pip show ibm_db
Name: ibm-db
Version: 3.0.2
Summary: Python DBI driver for DB2 (LUW, zOS, i5) and IDS
Home-page: http://pypi.python.org/pypi/ibm_db/
Author: IBM Application Development Team
Author-email: opendev@us.ibm.com
License: Apache License 2.0
Location: c:\tools\miniconda3\envs\env38\lib\site-packages

您正在使用 miniconda / anaconda 提供的 python 構建,這可能是決定因素。

一種解決方法是使用 conda 在本地構建 ibm_db 並從本地安裝新構建的 package。 其他解決方法可能是可能的。

構建 conda 包和安裝它們的說明在這里和相關頁面。

For Win10 x64 20H2 with anaconda 2020.11 (4.9.2) the following commands let me use python ibm_db module to connect to Db2, at least from the anaconda prompt.

  • 為 Microsoft Windows x64 安裝 Anaconda 2020.11。
  • 在管理員模式的 Anaconda3 提示符 window 中運行這些命令(確保每個命令在運行下一個命令之前成功完成):
  • conda install conda-build git anaconda-clean m2-patch
  • conda update conda conda-build git m2-patch
  • cd /d %userprofile%
  • 如果目錄ibm_db存在,則重命名或刪除它。
  • conda skeleton pypi ibm_db
  • conda-build ibm_db
  • conda install --use-local ibm_db

If you now run conda list , it's output should contain ibm_db module, and the python (3.8.5) will connect to Db2, at least when used in the anaconda prompt window.

如果您繼續遇到相同的 SQL1042C 症狀,請確認 PATH 上沒有其他 Db2 產品(除了clidriver\bin ),然后在啟動 python 之前將兩個附加目錄添加到 PATH。 這些是clidriver\bin\icc64clidriver\bin\amd64.vc12.crt (或任何 amd64.vc.XX.crt 存在於 clidriver\bin 下)的完全限定路徑名。 這通常不需要,某些特定配置的 clidriver 存在缺陷,因此需要這樣做,IBM 應在未來某個時間提供修復 (IT34327)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM