使用pypyodbc连接SQL Server时出现IM002错误的原因排查求助
解决pypyodbc连接SQL Server时的IM002驱动错误
核心错误原因
你当前的连接字符串只是写了占位符{DRIVER}、{SERVER_NAME}等,但没有将你定义的变量值实际替换进去,ODBC驱动管理器读到的是字面量{DRIVER},而非真实的ODBC Driver 17 for SQL Server,所以才会提示找不到数据源。
修正步骤
1. 正确格式化连接字符串
有两种常用方式可以把变量代入连接字符串:
- 方式一:使用f-string(Python 3.6+推荐)
conn_string = f""" Driver={DRIVER}; Server={SERVER_NAME}; Database={DATABASE_NAME}; Trusted_Connection=yes; """
- 方式二:使用str.format()方法
conn_string = """ Driver={DRIVER}; Server={SERVER_NAME}; Database={DATABASE_NAME}; Trusted_Connection=yes; """.format(DRIVER=DRIVER, SERVER_NAME=SERVER_NAME, DATABASE_NAME=DATABASE_NAME)
2. 修复游标初始化问题
你的代码中cursor = conn.cursor缺少括号,正确写法应该是:
cursor = conn.cursor()
否则只是引用了游标方法对象,无法执行后续SQL操作。
额外验证点
确认你的Python解释器和ODBC驱动是相同架构(32位/64位):
- 打开Python终端,执行
import sys; print(sys.maxsize > 2**32),返回True是64位Python,False是32位。 - 如果Python是32位,你需要安装32位的
ODBC Driver 17 for SQL Server,否则即使驱动列表里能看到,也会因为架构不匹配无法调用。
内容的提问来源于stack exchange,提问作者Colby Farnham
相关产品推荐
相关产品推荐

