[英]SQLCODE=-30081 Cannot connect to IBM DB2 database with python
[英]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.
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\icc64
和clidriver\bin\amd64.vc12.crt
(或任何 amd64.vc.XX.crt 存在于 clidriver\bin 下)的完全限定路径名。 这通常不需要,某些特定配置的 clidriver 存在缺陷,因此需要这样做,IBM 应在未来某个时间提供修复 (IT34327)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.