官方抄了个例子
import ibm_db ibm_db.connect("DATABASE=name;HOSTNAME=host;PORT=60000;PROTOCOL=TCPIP;UID=username; PWD=password;", "", "")
连接本地数据库没问题,但是连接远程数据库就出现以下错误
Exception: [IBM][CLI Driver] SQL1042C An unexpected system error occurred. SQLSTATE=58004 SQLCODE=-1042
百度搜到了 https://www.cnpython.com/qa/524656 这篇文章,试验在url中加上
AUTHENTICATION=SERVER;
解决了问题。
附上完整代码,亲测有效。
import ibm_db url = "DATABASE=testdb;HOSTNAME={0};PORT={1};PROTOCOL=TCPIP;UID={2};PWD={3};AUTHENTICATION=SERVER;".format(remoteserver, port,password) print("------ db2v11: " + url + " ------") sql = "select * from schema.tablename" conn = ibm_db.connect(url, "", "") # 连接数据库 stmt = ibm_db.exec_immediate(conn, sql) # 执行sql result = ibm_db.fetch_both(stmt) # 将sql返回的第一行数据存入result,result是一个二维数组 result_list = [] # 定义列表存放所有结果 while result: ###循环获取sql返回的所有数据### result_list.append([result[0], result[1]]) # sql返回多少个字段,就按照列表索引进行获取,本例中是假设返回两个字段 result = ibm_db.fetch_both(stmt) for result in result_list: print(result) if ibm_db.active(conn): ibm_db.close(conn)
标签:ibm,python,58004,db,url,result,sql,conn From: https://www.cnblogs.com/panda4671/p/17001171.html