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

如何通过Python使用Azure AD通用MFA认证连接SQL Server?

如何用Python通过Azure AD Universal with MFA认证连接SQL Server?

当然可以实现!我之前也碰到过一模一样的需求,用pyodbc就能完美解决——它支持Azure AD的交互式MFA认证,和你在Azure Data Studio里用的“Azure Active Directory - Universal with MFA support”是完全对应的。下面是具体的步骤和代码示例:

步骤1:准备依赖

首先确保安装了pyodbc,以及最新版的ODBC驱动(推荐ODBC Driver 18 for SQL Server,低版本可能不支持MFA认证):

pip install pyodbc

如果是Windows系统,Azure Data Studio通常已经自带了兼容的ODBC驱动,不用额外安装;如果是Linux/macOS,需要手动下载对应系统的驱动包。

步骤2:编写连接代码

核心是在连接字符串里指定Authentication=ActiveDirectoryInteractive,这个参数就是对应MFA通用认证的逻辑。直接把你Azure Data Studio里的凭据填进去就行:

import pyodbc

# 替换成你自己的服务器和账户信息
server = "***.net"
database = "target"
username = "***.***@mycompany.com"

# 构建连接字符串
conn_str = (
    f"DRIVER={{ODBC Driver 18 for SQL Server}};"
    f"SERVER={server};"
    f"DATABASE={database};"
    f"UID={username};"
    "Authentication=ActiveDirectoryInteractive;"
    "Encrypt=yes;"
)

# 建立连接——这里会自动弹出MFA验证窗口(比如Microsoft Authenticator弹窗、手机验证码)
try:
    conn = pyodbc.connect(conn_str)
    print("连接成功!")
    
    # 测试执行查询,替换成你的测试表
    cursor = conn.cursor()
    cursor.execute("SELECT TOP 5 * FROM your_table_name;")
    for row in cursor:
        print(row)
        
finally:
    if conn:
        conn.close()

用SQLAlchemy的进阶方案

如果你习惯用SQLAlchemy来操作数据库,可以基于上面的连接字符串构建引擎:

from sqlalchemy import create_engine

# 转义连接字符串里的特殊字符,避免URL解析报错
encoded_conn_str = conn_str.replace(";", "%3B").replace("=", "%3D")
engine_url = f"mssql+pyodbc:///?odbc_connect={encoded_conn_str}"

engine = create_engine(engine_url)

# 测试连接
with engine.connect() as conn:
    result = conn.execute("SELECT @@VERSION;")
    print("SQL Server版本:", result.fetchone()[0])

一些实用提醒

  • 这个方法是交互式认证,必须在有图形界面的环境下运行(比如本地电脑),因为会弹出MFA验证窗口;如果是无界面的服务器环境,可能需要改用服务主体或托管身份认证,那是另一种场景了。
  • 不要把账户信息硬编码在代码里,建议用环境变量或者Azure Key Vault来存储敏感信息,比如:
    import os
    username = os.getenv("AZURE_AD_USERNAME")
    server = os.getenv("SQL_SERVER_ADDRESS")
    

内容的提问来源于stack exchange,提问作者Ben Nicholl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:56:38