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

如何通过托管标识将Django与Azure MS SQL Server数据库连接

用托管标识连接Azure MS SQL Server到Django

前置准备

  • 确保你的Azure资源已配置托管标识(系统分配或用户分配),且该标识已被授予Azure SQL数据库的访问权限——可通过Azure Portal添加AD用户,或执行以下SQL命令分配角色:
    CREATE USER [你的托管标识名称] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_owner ADD MEMBER [你的托管标识名称];
    
  • 已安装pyodbc及Django官方支持的SQL Server驱动sql_server.pyodbc。

修改Django settings.py配置

移除原配置中的USER和PASSWORD字段,在OPTIONS中添加托管标识认证参数:

系统分配托管标识配置

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'HPI_SI_DB',
        'HOST': 'abcengine.database.windows.net',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'Authentication': 'ActiveDirectoryMsi'
        }
    },
    'DB2': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'HPI_SI_DB',
        'HOST': 'abcdengine.database.windows.net',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'Authentication': 'ActiveDirectoryMsi'
        }
    }
}

用户分配托管标识配置

如果使用用户分配的托管标识,需额外添加MsiClientId参数(替换为你的标识客户端ID):

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'HPI_SI_DB',
        'HOST': 'abcengine.database.windows.net',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'Authentication': 'ActiveDirectoryMsi',
            'MsiClientId': '你的托管标识客户端ID'
        }
    },
    'DB2': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'HPI_SI_DB',
        'HOST': 'abcdengine.database.windows.net',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'Authentication': 'ActiveDirectoryMsi',
            'MsiClientId': '你的托管标识客户端ID'
        }
    }
}

验证连接

运行以下命令测试数据库连接是否正常:

python manage.py dbshell

或执行迁移命令验证:

python manage.py migrate

内容的提问来源于stack exchange,提问作者Prakhar Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:54:10