pyodbc无法连接到数据库,但ibmdatastudio使用相同的凭据进行连接

2024-04-25 23:13:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图连接到IBM机器上的数据库,通过IBM桌面客户机“IBMDataStudio”可以很好地连接,但是,当我尝试使用pyodbc连接时,它无法连接。我收到了一系列的错误,但似乎主要的反应如下

pyodbc.OperationalError: ('08001', u'[08001] [Microsoft][ODBC SQL Server Driver]
[TCP/IP Sockets]SQL Server does not exist or access denied. (17) 
(SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (
Connect()). (10061); [08001] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)')

我的代码如下:

^{pr2}$

我在用Windows操作系统。在


Tags: ip机器数据库sql客户机serverdriveribm
3条回答

不能使用Microsoft SQL Server的ODBC驱动程序连接到IBM DB2实例(也不能连接到Microsoft SQL Server以外的任何DBMS)。在

对于这个连接,您需要一个ibmdb2的ODBC驱动程序,例如those from my employer。在

您还可以将ODBC-to-JDBC Bridge Driver与ibmdb2的JDBC驱动程序结合使用,例如JTOpen(开源,来自IBM)。在

我解决了问题!问题是我缺少“iSeries访问ODBC驱动程序”。我不认为它在网上是可用的,虽然我可能是错的,我不得不让我们的数据库人员帮助安装它。现在我可以通过ibm_dbpyodbc两个库进行连接,在“odbcad32.exe”下设置了DSN之后。这需要一段时间来解决,但主要是因为缺少IBM提供的信息性文档。希望这对处于同样情况下的任何人都有帮助。在

仅仅因为来自datastudio的jdbc连接正在工作,并不意味着pyodbc将连接到Db2。pyodbc不使用jdbc,而是使用到Db2的CLI/ODBC接口,该接口由合适的驱动程序实现。在

要确保在Windows服务器上安装了Db2或Windows上的Db2、eem。在

有许多kinds的Db2客户机。这在很大程度上取决于运行Db2服务器的操作系统(Z/OS、i-Series、Linux、Unix、Windows),以及希望在客户机上执行的活动类型(开发、管理/监视、查询或全部三种)。在

对于某些目标平台,存在非IBM驱动程序,但我将不讨论这些驱动程序。在

在python中,您可以选择使用DSN(数据源名称)连接到数据库(通常这涉及一个较短的连接字符串) 或者没有DSN(包含所有详细信息的较长连接字符串)。在

在学习时,让微软Windows使用odbcad32完成大部分初始工作可能会更容易。 如果Db2客户机已经配置为访问一个或多个Db2数据库,这是最容易的。先决条件是驱动程序支持CLI/ODBC。在

要定义DSN(系统DSN或用户DSN),请使用Microsoft odbcad32工具指向Db2数据库并验证连接。在

如果Db2服务器运行在Z/OS或i-Series上,根据您是直接连接到目标Db2服务器还是使用db2connect网关,可能会有特殊的许可要求。在

注意odbcad32中用于Db2数据库的确切的驱动程序字符串,包括大小写和空格,因为在python代码中需要这样的字符串。在

例如,如果您在Windows上安装了本地Db2服务器(例如免费的Db2-Express-C),那么该驱动程序名可能看起来像“ibmdb2ocbdc driver-DB2COPY1”。在

验证odbcad32中与Db2数据库的连接是否成功。这是至关重要的。在

当odbcad32成功连接时,pyodbc通常会成功连接。在

在python代码中,连接字符串可以使用DSN,也可以显式地引用驱动程序/SERVER/PORT/DATABASE/UID/PWD以及连接字符串上的任何其他必需设置。在

还要记住,您不必使用pyodbc。python还有其他与Db2服务器交互的选项。做一个明智的选择并做你的研究。在

您还可以使用IBM提供的模块“IBM_db”或DBI接口模块“IBM_db_api”,或者如果您使用的是对象关系映射器,则可以使用SQLAlchemy适配器(IBM_db_sa),也可以使用django框架。在

在这里阅读Db2文档中的所有内容。 https://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.5.0/com.ibm.swg.im.dbclient.python.doc/doc/c0054366.html

相关问题 更多 >