【问题标题】:Why do I not have ODBC Driver 17 in my pyodbc drivers? How can I fix this in anaconda?为什么我的 pyodbc 驱动程序中没有 ODBC 驱动程序 17?如何在 anaconda 中解决这个问题?
【发布时间】:2021-10-29 17:19:20
【问题描述】:

我在尝试通过 pyodbc 连接到 SQL Server 时不断收到此错误:

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

这是我通过 pyodbc.connect() 传递的字符串:

'DRIVER={ODBC Driver 17 for SQL Server};'

当我运行 print(pyodbc.drivers()) 时,返回的是以下内容:

['SQL Server', 'Microsoft Access Driver (*.mdb, *.accdb)', 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'Microsoft Access Text Driver (*.txt, *.csv)']

如何让 ODBC 驱动程序 17 出现在我的 pyodbc 驱动程序列表中?作为参考,我在我的工作机器上的 Windows 上运行 anaconda。

非常感谢

【问题讨论】:

  • 启动 \Windows\System32\odbcad32.exe 并检查“驱动程序”选项卡。你在那儿看到了吗?
  • @GordThompson 不——它不存在。当我执行 pyodbc.drivers() 时返回的所有相同的驱动程序都在那里。
  • 好的,所以您没有安装 64 位版本的 ODBC Driver 17 for SQL Server。最后我检查了一下,这个过程有点令人困惑,因为 32 位安装程序安装了 32 位驱动程序,而 64 位安装程序同时安装了 64 位和 32 位版本,但是事情可能已经改变。无论如何,前往download page 并尝试再次下载“x64”版本。
  • @GordThompson 太棒了——这很有效。非常感谢您的帮助!

标签: python sql-server anaconda odbc pyodbc


【解决方案1】:

pyodbc.drivers()返回的列表……

['SQL Server',
 'Microsoft Access Driver (*.mdb, *.accdb)',
 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)',
 'Microsoft Access Text Driver (*.txt, *.csv)'
]

... 表示该进程在 Windows 上的 64 位 Python 下运行,因为它不包括由 Windows 安装程序自动安装的旧版 32 位 Jet 驱动程序,例如 Microsoft Access Driver (*.mdb)。因此,我们可以得出结论,ODBC Driver 17 for SQL Server 的 64 位版本根本没有安装在该机器上。通过安装它

https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server

解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多