Python 3和IBM_DB安装问题

时间:2017-12-28 19:39:10

标签: python python-3.x db2

我目前正在使用Windows 10计算机和Python 3.6.3并已下载并安装了此处列出的要求: https://www.ibm.com/support/knowledgecenter/en/SSSNY3_10.1.0/com.ibm.swg.im.dbclient.python.doc/doc/t0054367.html 从以下链接:

https://www.ibm.com/support/knowledgecenter/en/SSSNY3_10.1.0/com.ibm.swg.im.dbclient.python.doc/doc/r0054697.html

我已安装ODBC驱动程序(IBM DB2 ODBC Driver)并在Windows 10计算机上的ODBC数据源管理器界面中对其进行了配置。我还使用适当的设置为SQL Server连接做了这个。

我遇到的问题是我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\<Username>\Python\Test IBM Connection.py", line 6, in <module>
    ibm_db.connect("<DSN>","<Username>","<Password>")
Exception: [IBM][CLI Driver] SQL1531N  The connection failed because the name
specified with the DSN connection string keyword could not be found in either 
the db2dsdriver.cfg configuration file or the db2cli.ini configuration file.  
Data source name specified in the connection string: "<DSN>".
 SQLCODE=-1531

我当然用谷歌搜索这个问题无济于事。我是IBM_DB的新手,它需要帮助配置DSN才能正常工作。

我也试图运行db2dsdcfgfill - 但是没有成功,请看这里: https://www.ibm.com/support/knowledgecenter/en/SSEPGG_9.5.0/com.ibm.swg.im.dbclient.config.doc/doc/r0054557.html

我不确定这些文件中需要哪些信息,以及它们需要的位置以及如何注册它们以便系统看到它们。

我已经能够连接和查询SQL Server,但无法连接到IBM iSeries AS400系统。

我已经研究了我遇到的问题的很多部分,但没有找到解决我问题的方法。

根据要求,我添加了以下信息:

连接字符串:

ibm.connect("<DSN>", "<Username>","<Password>")

ODBC版本是11.01.00.1527

我正在连接到IBM iSeries数据库 - 它在system i上运行并且运行的是7.2版

1 个答案:

答案 0 :(得分:0)

此答案显示了如何使用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当前为空。 您可能需要其他参数来连接到Db2 for i。我的例子是针对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%