0

0

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

碧海醫心

碧海醫心

发布时间:2026-01-02 15:21:03

|

716人浏览过

|

来源于php中文网

原创

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

本文详解使用 pyodbc 连接 azure sql 数据库的完整流程,涵盖 odbc 驱动安装、连接字符串构造、安全连接实践及常见错误排查,助你快速建立稳定数据库连接。

要在 Python 中通过 pyodbc 成功连接 Azure SQL 数据库,仅安装 pyodbc 包是不够的——它只是一个 Python 接口层,底层依赖系统级的 Microsoft ODBC Driver for SQL Server。你遇到的 IM002 错误(“Data source name not found and no default driver specified”)正表明:系统中未安装或未正确注册该驱动程序。

✅ 第一步:安装 Microsoft ODBC Driver

Windows 用户

  • 访问官方下载页:ODBC Driver for SQL Server
  • 推荐安装 ODBC Driver 18 for SQL Server(支持 TLS 1.2+ 和 Azure AD 身份验证)。
  • 下载对应架构的安装包(如 x64):
    ? Direct link for ODBC Driver 18 (x64)
  • 双击 .exe 安装,全程默认选项即可(无需重启,但建议验证后重试脚本)。

Linux 用户(以 Debian 12 为例)

# 下载并安装 ODBC Driver 18
curl https://packages.microsoft.com/debian/12/prod/pool/main/m/msodbcsql18/msodbcsql18_18.3.2.1-1_amd64.deb -o msodbcsql18.deb
sudo ACCEPT_EULA=Y dpkg --install msodbcsql18.deb

# 解决依赖(如提示 missing dependencies)
sudo apt-get update && sudo apt-get install -f -y
? 其他发行版请参考 Microsoft 官方 Linux 安装指南。

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

Azure 门户提供的 ODBC 连接字符串通常形如:

Driver={ODBC Driver 18 for SQL Server};Server=tcp:your-server.database.windows.net,1433;Database=your-db;Uid=your-user;Pwd=your-password;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;

⚠️ 注意以下关键点:

  • Driver= 后的名称必须与系统中已安装驱动的精确显示名一致(可通过 pyodbc.drivers() 查看);
  • 必须显式指定 Encrypt=yes(Azure SQL 强制加密);
  • 建议添加 TrustServerCertificate=no(启用证书链验证,提升安全性);
  • 端口 1433 应显式写在 Server= 后(逗号分隔),而非用 Port= 参数(部分驱动不识别)。

✅ 推荐的 Python 连接代码(含错误处理与验证):

ShopEx助理
ShopEx助理

一个类似淘宝助理、ebay助理的客户端程序,用来方便的在本地处理商店数据,并能够在本地商店、网上商店和第三方平台之间实现数据上传下载功能的工具。功能说明如下:1.连接本地商店:您可以使用ShopEx助理连接一个本地安装的商店系统,这样就可以使用助理对本地商店的商品数据进行编辑等操作,并且数据也将存放在本地商店数据库中。默认是选择“本地未安装商店”,本地还未安

下载

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

import pyodbc

# 1. 检查可用驱动(调试用)
print("Available drivers:", pyodbc.drivers())

# 2. 构建连接字符串(推荐使用 f-string 或字典格式化,避免 str.format 潜在格式错误)
driver = "{ODBC Driver 18 for SQL Server}"
server = "your-server.database.windows.net"
database = "your-db"
username = "your-user"
password = "your-password"

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"DBMS 名称: {conn.getinfo(pyodbc.SQL_DBMS_NAME)}")
    print(f"DBMS 版本: {conn.getinfo(pyodbc.SQL_DBMS_VER)}")

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

except pyodbc.Error as e:
    print("❌ 连接失败:", e)
finally:
    if 'conn' in locals() and conn:
        conn.close()
        print("? 连接已关闭")

⚠️ 常见问题与最佳实践

  • 驱动名不匹配? 运行 pyodbc.drivers() 查看真实驱动名(例如 Windows 上可能是 ODBC Driver 18 for SQL Server,Linux 上为 ODBC Driver 18 for SQL Server 或 ODBC Driver 17 for SQL Server)。
  • 防火墙/网络限制? 确保 Azure SQL 服务器的防火墙允许你的客户端 IP,或已启用“允许 Azure 服务和资源访问此服务器”。
  • 凭据安全? 切勿硬编码密码!推荐使用 Azure Key Vault、环境变量(os.getenv("DB_PASSWORD"))或 Azure AD 托管标识(生产环境首选)。
  • 连接池? 生产应用建议使用 pyodbc.pooling = True(默认开启)并复用连接,避免频繁创建/销毁开销。

完成以上步骤后,你将获得一个稳定、安全、可扩展的 Azure SQL 数据库 Python 连接方案。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

720

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

627

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

744

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1236

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

700

2023.08.11

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.4万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号