我能够使用TOAD应用程序很好地连接到DB2,但是我需要能够在python中进行连接,以构建一些自动报告。
我已经安装了ibm_db
库,并且我尝试按照说明进行操作,但是仍然出现错误SQLCODE=-30081
。
import ibm_db
conn_str = 'database=XXXX;hostname=XXXX.host.com;port=11111;protocol=tcpip;uid=user;pwd=password'
conn = ibm_db_conn = ibm_db.connect(conn_str,'','')
跟踪:
Traceback (most recent call last):
File "C:/Users/username/PycharmProjects/Report/MAIN/MAIN.py", line 4, in <module>
conn = ibm_db_conn = ibm_db.connect(conn_str,'','')
SQLCODE=-30081
查找-30081
并不是很有帮助,因为它可能是由一系列事情引起的。
我确实读过某个地方,也许ibm_db
仅在Python 3.4上受支持,并且我正在使用Python 3.6,但是由于管理员锁定,我现在无法在其工作PC上安装Python 3.4。
更新:
使用命令行测试了连接,并为ibm_db提供了2个不同的连接选项。
两种连接类型:
import ibm_db
conn_str = 'database=XXXX;hostname=111.111.111.111;port=11111;protocol=tcpip;uid=username;pwd=password'
try:
conn = ibm_db.connect(conn_str, '', '')
except:
print("no connection:", ibm_db.conn_errormsg())
else:
print("The 1st connection was successful")
try:
conn = ibm_db.connect('XXXX', 'username', 'password')
except:
print("no connection:", ibm_db.conn_errormsg())
else:
print("The 2nd connection was successful")
错误:
C:\Users\username\Desktop\Python 3.6.2>python test.py
no connection: [IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "111.111.111.111". Communica SQLCODE=-30081etecting the error: "recv". Protocol specific error code(s): "10054", "*", "0". SQLSTATE=08001
no connection: [IBM][CLI Driver] SQL30082N Security processing failed with reason "19" ("USERID DISABLED or RESTRICTED" SQLCODE=-30082001
任何指导将不胜感激。
答案 0 :(得分:1)
您的错误消息是:
SQL30082N安全处理失败,原因为“ 19”(“ USERID已禁用或受限制” SQLCODE = -30082001
以下是此消息的不错的文章之一:
错误SQL30082N原因码19或24
https://www.ibm.com/support/pages/error-sql30082n-reason-code-19-or-24
此处已被删除,我们可能需要在Windows上进行以下操作:
4。)如果您使用的是Windows,请确保将用户所在的组添加到:“从网络访问此计算机”。去检查 请执行以下操作:
从Windows开始菜单中单击开始->运行 键入“ secpol.msc” 转到本地策略->用户权限分配。 双击“从网络访问此计算机”
有关此主题的更多信息,请参见“相关URL”以获取更多信息
希望这会有所帮助。