1

我对python很陌生。我正在尝试使用 python 和 ibm_db.connect() 连接到 informix 服务器。但是我似乎无法成功,错误消息也无济于事。

使用 java 和 jdbc 我可以通过以下连接 url 成功连接:

jdbc:informix-sqli://10.20.30.40:1234/mydb:INFORMIXSERVER=foo_bar;USER=user;PASSWORD=pass;

我使用 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

4 回答 4

0

请检查https://code.google.com/p/ibm-db/issues/detail?id=116&can=1&q=ONSOCTCP,这可能对您有所帮助。如果您仍然遇到问题,那么您可以将您的查询发布到https://groups.google.com/forum/#!forum/ibm_db以便快速响应。

于 2014-09-23T09:17:21.323 回答
0

ibm_db 不支持 onsoctcp 协议。

请查看https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.admin.doc/ids_admin_0207.htm,这可以帮助您配置对数据库的 DDRA (tcpip) 访问。

于 2017-03-29T14:00:23.183 回答
0

您的 JDBC 连接字符串指向 SQLI Informix 侦听器,但“ibm_db”python 模块使用 DRDA(IBM 数据服务器驱动程序)连接到 Informix 引擎。

Informix 允许 SQLI 和 DRDA 客户端(以及 MongoDB 等其他客户端)。SQLI 是“本机”Informix 协议,支持所有 Informix 服务器功能和数据类型。DRDA 是其他 IBM 数据库使用的(如 DB2)。它在您可以使用的类型方面确实有一些限制。

您有两个选择: 配置 Informix 服务器以侦听另一个端口中的 DRDA 连接(基本上,使用 'drsoctcp' 创建 DALIASES),如下所述:

https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.admin.doc/ids_admin_0207.htm

或者让服务器保持原样,并使用不同的 Python 模块,一个使用 SQLI 的模块,例如“IfxPy”

https://github.com/OpenInformix/IfxPy

于 2020-09-14T07:36:20.327 回答
0

我在使用 ibm_db 时遇到了同样的问题,现在我使用 jayDeBeApi 通过 python 连接到 Informix。它需要 java JDBC 驱动程序和应用程序的工作就像一个魅力。

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

于 2020-09-14T04:56:53.473 回答