You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyodbc连接SQL Server报错:未找到数据源名称且无默认驱动

解决pyodbc连接SQL Server时的IM002驱动找不到错误

先修正代码里的致命语法错误

你提供的两段代码都存在同一个问题:连接字符串拆成多行后没有用+拼接,导致pyodbc只接收到了Driver=那一段,服务器、数据库等关键参数根本没传入,这是触发错误的核心原因之一。

修正后的代码结构示例(以ODBC Driver 17为例):

import pyodbc 
cnxn = pyodbc.connect(
    "Driver={ODBC Driver 17 for SQL Server};"
    "Server=localhost,1443;"
    "Database=emp;"
    "UID=sam;"
    "PWD=xyz@123;"
)

驱动名称要写对

注意:SQL Server Native Client 17.0是错误的驱动名称,官方ODBC驱动17的标准名称是{ODBC Driver 17 for SQL Server};而SQL Server Native Client 11.0是正确的(仅适配SQL Server 2012及更早版本)。

你可以在Python里执行以下代码,查看系统中已安装的所有ODBC驱动,确保代码里的名称和输出完全一致:

import pyodbc
print(pyodbc.drivers())

移除身份验证参数冲突

你的连接字符串同时写了user/password和Trusted_Connection=yes,这两个参数互斥:

  • 用SQL Server账号登录:删除Trusted_Connection=yes,保留UID和PWD(或user/password,UID/PWD是ODBC标准写法)
  • 用Windows身份验证登录:删除user和password,保留Trusted_Connection=yes

完整正确示例

1. SQL Server账号登录

import pyodbc
cnxn = pyodbc.connect(
    "Driver={ODBC Driver 17 for SQL Server};"
    "Server=localhost,1443;"  # 端口用逗号分隔,不是冒号
    "Database=emp;"
    "UID=sam;"
    "PWD=xyz@123;"
)

2. Windows身份验证登录

import pyodbc
cnxn = pyodbc.connect(
    "Driver={ODBC Driver 17 for SQL Server};"
    "Server=localhost,1443;"
    "Database=emp;"
    "Trusted_Connection=yes;"
)

额外排查点

  • 确认SQL Server服务正在运行,且允许对应方式的连接
  • 检查端口号是否正确:默认是1433,你写的1443要和实际配置一致
  • 确认数据库emp存在,账号sam有访问该数据库的权限

内容的提问来源于stack exchange,提问作者Shivam Nirmal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:47:43