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

如何用Python的pyodbc连接Azure SQL数据库?遇IM002错误求助

解决pyodbc连接Azure SQL时的「数据源名称未找到」错误

我尝试用Python的pyodbc包连接Azure SQL数据库,已从Azure SQL资源的「设置」组下的「连接字符串」菜单ODBC标签页复制了带用户名密码认证的连接字符串,编写的代码如下:

import pyodbc


driver = "{ODBC Driver 18 for SQL Server}"
server = "<server>"
database = "<database>"
username = "<user_name>"
password = "<password>"

conn_str = str.format(
    "Driver={0};Server={1},1433;Database={2};Uid={3};Pwd={4}",
    driver,
    server,
    database,
    username,
    password,
)

connection = pyodbc.connect(conn_str)

connection.close()

运行后遇到错误:

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


解决方法:

  • 安装对应版本的ODBC驱动:错误核心是系统未安装代码中指定的「ODBC Driver 18 for SQL Server」,需下载对应操作系统的官方ODBC驱动并完成安装,安装后重启终端或IDE再执行代码。
  • 核对驱动名称准确性:不同版本的驱动名称有差异,比如旧版本为{ODBC Driver 17 for SQL Server}。可通过系统工具查看已安装驱动:Windows搜索打开「ODBC数据源管理器」查看驱动列表;macOS/Linux终端执行odbcinst -q -d命令查看,将代码中的driver值替换为实际存在的驱动名称。
  • 添加加密连接参数:Azure SQL默认要求加密连接,Driver 18版本默认加密级别为Strict,建议在连接字符串中补充Encrypt=yes;TrustServerCertificate=no参数,避免加密相关的额外错误。

修改后的示例代码:

import pyodbc

driver = "{ODBC Driver 18 for SQL Server}"
server = "<server>"
database = "<database>"
username = "<user_name>"
password = "<password>"

# 补充加密参数
conn_str = f"Driver={driver};Server={server},1433;Database={database};Uid={username};Pwd={password};Encrypt=yes;TrustServerCertificate=no"

try:
    connection = pyodbc.connect(conn_str)
    print("数据库连接成功")
    connection.close()
except pyodbc.Error as e:
    print(f"连接失败: {e}")

内容的提问来源于stack exchange,提问作者Péter Szilvási

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:58:33