繁体   English   中英

使用 python 的 ibm_db 连接到 informix

[英]Connect to informix with python's ibm_db

我对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 驱动程序] SQL0902C 发生系统错误。无法处理后续 SQL 语句。IBM 软件支持原因代码:“”。SQLSTATE=58005)

如果可能的话,我想要一个等效的字符串作为第一个参数

ibm_db.connect('', '', '')

所以我可以连接python。

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

ibm_db 不支持 onsoctcp 协议。

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

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

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

您的 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 模块,一个使用 SQLI 的模块,如“IfxPy”

https://github.com/OpenInformix/IfxPy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM