通过 Python 连接到 UCCX 数据库 (Informix)

Posted

技术标签:

【中文标题】通过 Python 连接到 UCCX 数据库 (Informix)【英文标题】:Connection to the UCCX Database (Informix) via Python 【发布时间】:2020-02-12 17:34:22 【问题描述】:

我想使用 Python 脚本从 Cisco UCCX 数据库 (Informix) 中提取数据。

按照this guide 中的说明安装 Informix Client SDK 和 pyodbc 后,我运行以下连接:

pyodbc.connect('SERVICE=1504;PROTOCOL=onsoctcp;CLIENT_LOCALE=en_US.UTF8;DB_LOCALE=en_US.UTF8;DRIVER=IBM INFORMIX ODBC DRIVER (64-bit);UID=uccxhruser;PWD=my_pwd;DATABASE=db_cra;HOST=my-uccx;SERVER=my-uccx_uccx')

但我收到以下错误:

错误: ('HY000', '[HY000] [Informix][Informix ODBC 驱动程序][Informix]INFORMIXSERVER 与 DBSERVERNAME 或 DBSERVERALIASES。 (-761) (SQLDriverConnect)')

我该如何解决这个问题?

【问题讨论】:

从表面上看,您将环境变量$INFORMIXSERVER(或在连接字符串中指定了它的值)设置为不正确的值。服务器名称不应包含破折号,因此可能是连接字符串中的SERVER=my-uccx_uccx 有问题,或者它可能在其他地方。我冒昧地猜测您的服务器是my_uccx_uccx,但这是一个猜测。了解为实际服务器指定的内容至关重要。 好的,我去看看,变量INFORMIXSERVER是否对应连接字符串中的SERVER参数? 这是我没有的信息——连接字符串中的 SERVER 很有可能将 INFORMIXSERVER 作为环境变量匹配,但我不确定。 根据我在问题中发布的指南,无需明确设置INFORMIXSERVER。也许事情就像你的猜测。我将尝试验证 UCCX/Informix 服务器名称。 哇哇哇!原来服务器名称是my_uccx_uccx 而不是my-uccx_uccx,现在它可以工作了。如果你把你的评论变成答案,我很乐意接受! 【参考方案1】:

将 cmets 转换为答案。

从表面上看,您已将环境变量 $INFORMIXSERVER(或在连接字符串中指定其值)设置为不正确的值。服务器名称不应包含破折号,因此可能是连接字符串中的SERVER=my-uccx_uccx 有问题,或者它可能在其他地方。我冒昧地猜测您的服务器是my_uccx_uccx(下划线而不是破折号)——但这是一个猜测。了解为实际服务器指定的内容至关重要。

变量 INFORMIXSERVER 是否对应连接字符串中的 SERVER 参数?

这是我没有的信息——连接字符串中的SERVER 很有可能与作为环境变量的INFORMIXSERVER 匹配,但我不确定。

考虑到后面的成功,很可能连接字符串中的SERVER对应环境中的INFORMIXSERVER

哇哇哇!原来服务器名称是my_uccx_uccx 而不是my-uccx_uccx,现在它可以工作了。

太棒了——我很高兴你已经开始运行了。

【讨论】:

以上是关于通过 Python 连接到 UCCX 数据库 (Informix)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 通过 SSL 连接到远程 PostgreSQL 数据库

无法通过 python 中的 ssh 隧道连接到远程数据库

使用 Python 通过 SSH 隧道连接到远程 PostgreSQL 数据库

通过python连接到MySQL db [重复]

python如何通过pymongo连接到mongodb?

通过 ODBC 使用 Python 连接到 MySQL 数据库的问题