通八洲科技

如何使用 pyodbc 在 Python 中连接 Azure SQL 数据库

日期:2026-01-02 00:00 / 作者:霞舞

本文详解在 python 中通过 pyodbc 连接 azure sql 数据库的完整流程,涵盖 odbc 驱动安装、连接字符串构造、安全连接实践及常见错误排查。

要成功使用 pyodbc 连接 Azure SQL 数据库,仅编写 Python 代码是不够的——关键前提是系统中必须已安装兼容且受支持的 Microsoft ODBC 驱动程序。你遇到的 pyodbc.InterfaceError: 'Data source name not found and no default driver specified' 错误,根本原因正是:{ODBC Driver 18 for SQL Server} 这一驱动名称在本地系统中未注册(即驱动未安装),导致 pyodbc 无法解析并加载对应驱动。

✅ 步骤一:安装 Microsoft ODBC Driver for SQL Server

请根据操作系统选择对应版本安装(推荐 ODBC Driver 18,它原生支持 TLS 1.2+、Azure AD 认证和最新 Azure SQL 功能):

⚠️ 注意:Ubuntu/Debian 用户需确保已添加 Microsoft GPG 密钥与源;CentOS/RHEL 用户请参考官方文档选择 .rpm 包。

✅ 步骤二:构建并验证连接字符串

Azure 门户提供的 ODBC 连接字符串通常形如:
Driver={ODBC Driver 18 for SQL Server};Server=tcp:yourserver.database.windows.net,1433;Database=yourdb;Uid=username;Pwd=password;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;

立即学习“Python免费学习笔记(深入)”;

⚠️ 关键配置项说明(必须显式设置,否则连接失败):

优化后的 Python 示例(含异常处理与连接验证):

import pyodbc

# 替换为你的实际参数(建议从环境变量读取,避免硬编码密码)
DRIVER = "{ODBC Driver 18 for SQL Server}"
SERVER = "yourserver.database.windows.net"
DATABASE = "yourdb"
USERNAME = "youruser"
PASSWORD = "yourpassword"

conn_str = (
    f"Driver={DRIVER};"
    f"Server={SERVER},1433;"
    f"Database={DATABASE};"
    f"Uid={USERNAME};"
    f"Pwd={PASSWORD};"
    "Encrypt=yes;"
    "TrustServerCertificate=no;"
    "Connection Timeout=30;"
)

try:
    conn = pyodbc.connect(conn_str)
    print("✅ 连接成功!")
    print(f"数据库管理系统: {conn.getinfo(pyodbc.SQL_DBMS_NAME)}")
    print(f"版本: {conn.getinfo(pyodbc.SQL_DBMS_VER)}")

    # 可选:执行简单查询验证
    cursor = conn.cursor()
    cursor.execute("SELECT @@VERSION;")
    print("SQL Server 版本:", cursor.fetchone()[0])

    conn.close()
except pyodbc.Error as e:
    print("❌ 连接失败:", str(e))

? 安全增强建议(生产环境必读)

完成上述步骤后,你将获得稳定、安全、符合 Azure 最佳实践的 Python 到 Azure SQL 数据库连接能力。