使用python的ibm_db连接到informix

时间:2013-10-18 23:29:47

标签: python database-connection informix

我对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连接。

4 个答案:

答案 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驱动程序,并且应用程序的运行就像一个魅力。

https://pypi.org/project/JayDeBeApi/#:~:text=The%20JayDeBeApi%20module%20allows%20you,of%20the%20Java%20JDBC%20driver

答案 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

https://github.com/OpenInformix/IfxPy