【问题标题】:Specify ODBC Administrator in PYODBC在 PYODBC 中指定 ODBC 管理员
【发布时间】:2015-01-31 02:48:57
【问题描述】:

我无法让 PYODBC 在我的 Windows 机器上工作。

import pyodbc
c = pyodbc.connect('DSN=netezza')

返回的错误是:

错误: ('IM003', '[IM003] 由于系统错误 193 无法加载指定的驱动程序...')

Googling this error 透露这可能是 32 位和 64 位驱动程序的问题。另一篇文章建议 PYODBC 的默认管理员使用 64 位数据源管理员。事实上,我注意到当我启动 WinSQL 时,它可以成功连接到数据库而没有任何问题,因为它似乎使用了不同的数据源管理员(32 位版本)。但是,我不知道如何为 PYODBC 指定 32 位数据源管理员。我知道我应该将 PYODBC 指向 %windir%\SysWOW64\odbcad32.exe 但我只是不知道我需要在哪里指定。

更新:

import pyodbc
c = pyodbc.connect('DRIVER={NetezzaSQL};SERVER=<ip address>;PORT=<port>;DATABASE=<db>;UID=<username>;PWD=<password>')

这也产生了与上述完全相同的错误。

【问题讨论】:

  • 您使用的是 32 位还是 64 位 Python?

标签: python sql odbc pyodbc


【解决方案1】:

python的架构版本和ODBC驱动必须匹配。

例如,如果您安装了 32 位 Netezza 驱动程序,则需要 32 位 python。如果您有 64 位驱动程序,则需要 64 位 python。

您可以启动一个交互式 python shell 来确认您的路径中的内容(下面的屏幕截图是 64 位 python):

【讨论】:

  • 但是这篇文章中的 cmets:stackoverflow.com/questions/11108862/…。建议可以将 32 位 ODBC 管理员 (odbcad32.exe) 与 64 位 python 安装一起使用(我必须检查,但我相信我有 64 位 Python)。我不想争论这一点,但我不明白为什么 64 位 Python 与 32 位驱动程序不兼容。我可以理解 32 位 Python 不兼容 64 位驱动程序。
  • 那么,有没有办法指定驱动??如果同时安装了 32 位驱动程序和 64 位驱动程序会怎样?这怎么能调和??
【解决方案2】:

试试这个:

c = pyodbc.connect('DRIVER={SQL Server};DSN=netezza')

您也可以选择使用这种形式:

c = pyodbc.connect('DRIVER={SQL Server};SERVER=yourserver.com;DATABASE=netezza;UID=youruser;PWD=yourpassword')

我希望这会有所帮助!

【讨论】:

  • 不幸的是,这没有帮助。错误仍然相同。你能解释一下这样做会改变什么的逻辑吗?您是否建议指定驱动程序可能会以某种方式改变正在使用的数据源管理员(32 位与 64 位)?
  • Netezza 是一种数据仓库设备,不能通过 SQL Server 的 ODBC 驱动程序访问。
  • 啊哈,我知道我以前在某个地方听说过 Netezza……我以为他只是在引用一个名为 Netezza 的数据库。是否可能有设备元数据的数据库?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 2010-12-05
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多