我对python很新。我正在尝试使用python和ibm_db.connect()连接到informix服务器。但是我似乎无法成功,错误消息也无济于事。
使用java和jdbc我可以使用以下连接URL成功连接:
JDBC:INFORMIX-SQLI://10.20.30.40:1234 / MYDB:INFORMIXSERVER = foo_bar这样的名称; USER =用户; PASSWORD =通过;
我尝试使用ibm_db是:
ibm_db.connect('HOSTNAME=10.20.30.40;PORT=1234;DATABASE=mydb;PROTOCOL=ONSOCTCP;UID=user;PASSWORD=pass;', '', '')
但是它给出了一个错误(例外:[IBM] [CLI Driver] SQL0902C发生了系统错误。无法处理后续的SQL语句.IBM软件支持原因代码:“”。SQLSTATE = 58005)
我想尽可能使用等效字符串作为
的第一个参数ibm_db.connect('', '', '')
所以我可以用python连接。
答案 0 :(得分:0)
请检查https://code.google.com/p/ibm-db/issues/detail?id=116&can=1&q=ONSOCTCP,这可能对您有所帮助。如果您仍面临问题,则可以将查询发布到https://groups.google.com/forum/#!forum/ibm_db以便快速回复。
答案 1 :(得分:0)
ibm_db不支持协议onsoctcp。
请检查https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.admin.doc/ids_admin_0207.htm,这可以帮助您配置对数据库的DDRA(tcpip)访问。
答案 2 :(得分:0)
我在ibm_db中也遇到了同样的问题,现在我使用jayDeBeApi通过python连接到Informix。它需要Java JDBC驱动程序,并且应用程序的运行就像一个魅力。
答案 3 :(得分:0)
您的JDBC连接字符串指向SQLI Informix侦听器,但是'ibm_db'python模块使用DRDA(IBM数据服务器驱动程序)连接到Informix引擎。
Informix允许SQLI和DRDA客户端(以及诸如MongoDB之类的其他客户端)。 SQLI是“本机” Informix协议,并且支持所有Informix服务器功能和数据类型。 DRDA是其他IBM数据库(例如DB2)使用的。在可以使用的类型方面,确实有一些限制。
您有两个选择: 配置Informix服务器以侦听另一个端口中的DRDA连接(基本上,使用'drsoctcp'创建DBALIASES),如下所述:
https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.admin.doc/ids_admin_0207.htm
或者让服务器保持不变,并使用其他Python模块,该模块使用像'IfxPy'这样的SQLI