我已经安装了ODBC驱动程序(IBM DB2 ODBC驱动程序),并在Windows 10计算机上的ODBC数据源管理员界面中对其进行了配置。我还使用适当的设置对SQL Server连接进行了此操作。
我遇到的问题是我收到以下错误:
Traceback(most recent call last):File"C:\Users\\Python\Test IBM Connection.py",line6,inibm_db.connect("","","")Exception:[IBM][CLIDriver]SQL1531NTheconnection failed because the name
specifiedwiththe DSN connection string keyword couldnotbe foundineither
the db2dsdriver.cfg configuration fileorthe db2cli.ini configuration file.Datasource name specifiedinthe connection string:"".SQLCODE=-1531
我当然用谷歌搜索这个问题都没有用。我是IBM_DB的新手,它要求并且需要帮助来配置DSN以使其正常工作。
我还尝试运行db2dsdcfgfill-但未成功,请参见此处:https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_9.5.0/com.ibm.swg.im.dbclient.config.doc/doc/r0054557.html
我不确定这些文件中需要包含什么信息,它们应该位于何处以及如何注册它们,以便系统能够看到它们。
我已经能够连接和查询SQL Server,但无法连接到IBM iSeries AS400系统。
我已经研究了该问题的许多部分,但没有找到解决该问题的任何方法。
根据要求,我添加了以下信息:
连接字符串:
ibm.connect("","","")
ODBC版本为11.01.00.1527
我正在连接到IBM iSeries数据库-它在系统i上运行,并且正在运行7.2版
解决方案
此答案显示了一些有关如何使用db2cli.exe配置db2dsdriver.cfg的示例。
请记住,您不需要在python中使用DSN来连接到Db2数据库,您可以使用长格式的连接来指定连接的所有详细信息。当多个不同的本地应用程序使用DSN(因此配置仅在一个地方)时,或者当您的python脚本需要在可能使用不同DSN详细信息而无需更改代码且DSN所在的多个环境中运行时,使用DSN很有用。处于另一个组的控制之下,或者DSN参数是特定于环境的。因此,选择适合您企业的最佳方法。
如果必须使用DSN,请根据您的环境和要求选择user-dsn或system-dsn。
选择要用于Db2客户端的配置文件格式。db2cli.ini是一个旧的旧格式Windows样式INI文件,带有x = y元组和[section]块为纯文本。您可以使用文本编辑器或Db2的命令行命令来操纵其内容。这种旧格式具有足够的在线文档,并且已经存在数十年了,因此我将不对此进行扩展。
db2dsdriver.cfg文件是较新的格式。这是一个XML文件。您可以使用Db2命令(在Windows上为db2cli.exe)或通过文本编辑器(或XML编辑器)对其进行编辑。我将在当前支持的Db2客户端的新环境中使用这种格式。作为其XML,有一个验证步骤(db2cli validate ...)。
在线Db2知识中心提供了所有这些信息,尽管您确实需要花时间研究许多页面并仔细排练和测试。
以下是批处理文件脚本的一些示例行,您可以在MS-windows的ADMINISTRATOR db2cmd.exe窗口中运行这些示例行,它们显示了如何使用db2cli.exe工具来填充db2dsdriver.cfg。您必须至少具有本地管理员权限才能运行这些命令。
首先设置一些变量以匹配您的特定环境,端口号,Db2服务器的主机名,凭据和DSN以及远程数据库名称(这两个可以是不同的值)。然后运行db2cli,以使用先前设置的变量将条目写入db2dsdriver.cfg,最后运行db2cli,以尝试连接到DSN。这些是简单的示例,在实际情况下,您通常需要向数据库部分或DSN部分添加许多其他参数(不同平台上的Db2支持许多可以在连接时设置的选项)。您可以通过db2cli writecfg add语法来设置其中任何一个,尽管IBM的文档在这方面没有多大帮助。这些示例假定您的db2dsdriver.cfg当前为空。您可能需要其他参数才能连接到i的Db2。我的示例适用于LUW的Db2。您还需要相关的许可证。将下面的示例保存到批处理文件中,更改值以适合您的环境,然后在开发或测试环境中进行练习。
set db2_port=port_number_on_which_db2_is_listening
set db2_server=ip_address_or_fqdn_of_db2_server
set db2_id_to_connect=myusername
set db2_id_pwd=password
set dsn_name=sample
set db_name=sample
db2cli writecfg add-dsn%dsn_name%-database%db_name%-host%db2_server%-port%db2_port%db2cli writecfg add-database%db_name%-host%db2_server%-port%db2_port%db2cli validate-dsn%dsn_name%-connect-user%db2_id_to_connect%-passwd%db2_id_pwd%