Python连接MSSQL数据库报错求助:ODBC驱动未找到
问题排查:Python连接MSSQL数据库失败
问题描述
尝试用Python连接MSSQL数据库,编写代码如下:
import sqlalchemy as sal from sqlalchemy import create_engine import pyodbc ##conn = pyodbc.connect('Driver={SQL Server Native client 11.0};server=localhost;database=Nifty;trusted_connection=yes;') engine = sal.create_engine('mssql+pyodbc://localhost/Nifty?driver=SQL+Server+Native+client+11.0?Trusted_Connection=yes') engine.execute('select top 2 * from [dbo].ABC')
执行后触发错误:
InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
排查步骤与解决方案
1. 修正连接字符串格式错误
SQLAlchemy的pyodbc连接字符串中,多参数分隔符需用&而非第二个?,同时驱动名称需严格匹配系统安装的驱动名:
engine = sal.create_engine('mssql+pyodbc://localhost/Nifty?driver=SQL+Server+Native+Client+11.0&Trusted_Connection=yes')
注意:驱动名称里的client需大写为Client,保证和ODBC驱动的官方命名一致。
2. 确认本地已安装对应ODBC驱动
错误提示核心原因是系统找不到指定的ODBC驱动:
- 打开对应位数的ODBC数据源管理器(和你的Python版本一致,64位或32位),在「驱动」标签页查看是否存在
SQL Server Native Client 11.0。 - 若未安装,可安装对应驱动;也可改用更通用的新版驱动,比如
ODBC Driver 17 for SQL Server,连接字符串改为:
engine = sal.create_engine('mssql+pyodbc://localhost/Nifty?driver=ODBC+Driver+17+for+SQL+Server&Trusted_Connection=yes')
3. 验证连接参数准确性
- 确认服务器地址
localhost正确,若为SQL Server命名实例,需写成localhost\实例名。 - 确认数据库名称
Nifty存在且拼写无误。 - 若使用SQL Server身份验证(非Windows身份验证),需补充账号密码参数:
engine = sal.create_engine('mssql+pyodbc://用户名:密码@localhost/Nifty?driver=ODBC+Driver+17+for+SQL+Server')
4. 先通过pyodbc直接测试连接
先跳过SQLAlchemy,用pyodbc直接连接验证驱动和参数是否正常:
import pyodbc conn = pyodbc.connect('Driver={SQL Server Native Client 11.0};Server=localhost;Database=Nifty;Trusted_Connection=yes;') cursor = conn.cursor() cursor.execute('select top 2 * from [dbo].ABC') for row in cursor: print(row) conn.close()
如果这段代码能正常执行,再将参数迁移到SQLAlchemy的连接字符串中即可。
内容的提问来源于stack exchange,提问作者user11740857
相关产品推荐
相关产品推荐

