mssql-django 包是 Microsoft 官方支持的、适用于 SQL Server、Azure SQL 数据库、Azure SQL 托管实例 和 Microsoft Fabric 中 SQL 数据库的 Django 数据库后端。 它在GitHub上持续维护,并通过PyPI发布。 本页介绍版本控制、平台兼容性和支持策略。
版本支持
始终使用最新版本来获取新功能、性能改进和安全修补程序。 新功能仅添加到当前版本。
当前版本
2.0 版本是当前的正式发布(GA)版本。
Important
2.0版本要求 mssql-python 1.15.0或更高版本,即使数据库别名使用 pyodbc。 该软件包仅安装在兼容 mssql-python 发行版的平台上。 其他平台的项目仍保留在1.8.0版本。
支持状态定义
在版本表中使用这些状态值:
| 地位 | Meaning |
|---|---|
| 当前 | 获得新功能、错误修复和安全修复。 |
| 上一篇 | 历史版本。 仍可用,但不会接收更新。 |
版本历史记录
| 版本 | 发行日期 | 地位 | Django 版本 | 主要功能 |
|---|---|---|---|---|
| 2.0 | 2026 年 9 月 | 当前 | 5.2 - 6.1 | 可选启用mssql-python驱动程序,Python 3.10 - 3.14,zoneinfo替换pytz,MARS 及inspectdb修复 |
| 1.8.0 | 2026 年 8 月 | 上一个 | 3.2 - 6.1 | Django 6.1 支持, quote_name 查询编译器更换,外键内省返回 ON DELETE 规则 |
| 1.7.4 | 2026 年 7 月 | 上一个 | 3.2 - 6.0 |
GROUP BY 修复了在原始查询中使用真实参数转义的 %% 文本和 IntegerChoices 参数 |
| 1.7.3 | 2026 年 6 月 | 上一个 | 3.2 - 6.0 |
FA001 修复 Authentication= 以外的 ActiveDirectoryMsi 模式,子类化 DatabaseWrapperKeyError 修复(1.7.1 的回归) |
| 1.7.2 | 2026 年 5 月 | 上一个 | 3.2 - 6.0 |
datetimeoffset 时区修复, Now() 时区修复, .explain() 兼容性修复 |
| 1.7.1 | 2026 年 4 月 | 上一个 | 3.2 - 6.0 | Fabric 中 SQL 数据库修复,降序索引 AlterField 修复 |
| 1.7 | 2026 年 3 月 | 上一个 | 3.2 - 6.0 | Django 6.0 支持、ODBC 驱动程序 18 默认值、SQL Server 2025 支持 |
| 1.6 | 2025 年 8 月 | 上一个 | 3.2 - 5.2 | Django 5.1 和 5.2 支持、增强的 JSON 功能 |
| 1.5 | 2024 年 4 月 | 上一个 | 3.2 - 5.0 |
supports_comments 标志,AutoField 修复 |
| 1.4 | 2024 年 1 月 | 上一个 | 3.2 - 5.0 | Django 5.0 支持,db_comment 支持 |
| 1.3 | 2023 年 5 月 | 上一个 | 3.2 - 4.2 | 支持 Django 4.2,区分大小写 Replace |
| 1.2 | 2022 年 12 月 | 上一个 | 3.2 - 4.1 | Azure SQL 托管实例上的 Django 4.1 支持、时区支持、JSONField |
| 1.1 | 2022 年 7 月 | 上一个 | 3.2 - 4.0 | 支持 Django 3.2 和 4.0 的初始版本 |
1.1 之前的版本是预发行版本,未列出。
Important
修补程序和新功能仅在新版本中提供。 旧版本在 PyPI 上仍然可用,但未进行修补。 若要获取 bug 修复或安全修补程序,请升级到最新版本。
有关详细的发行说明,请参阅 mssql-django 中的新增功能。
Django 和 Python 版本兼容性
每个 Django 版本都支持特定的Python版本。
mssql-django 2.0测试了以下组合:
| Django 版本 | Python 版本 |
|---|---|
| 6.1 | 3.12, 3.13, 3.14 |
| 6.0 | 3.12, 3.13, 3.14 |
| 5.2 | 3.10, 3.11, 3.12, 3.13 |
Django 3.2 到 5.1 以及 Python 3.8 和 3.9 已经停止支持,没有被测试。 使用这些版本的项目仍停留在 mssql-django 1.8.0 版本。
Important
始终使用受支持的Python版本。 较旧的Python版本不会收到安全更新。
SQL Server 与 Azure SQL 的兼容性
mssql-django2.0 支持所有支持的 Microsoft SQL 版本。 如果后端无法识别较新的 SQL Server 主版本,该版本会使用后端已知的最新功能集进行连接,而不是因版本验证失败而无法连接。
| 产品或服务 | 支持状态 |
|---|---|
| SQL Server | 完全支持 |
| Azure 虚拟机中的 SQL Server | 完全支持 |
| Azure SQL 数据库 | 完全支持 |
| Azure SQL 托管实例 | 完全支持 |
| Fabric 中的 SQL 数据库 | 完全支持 |
| Microsoft Fabric 仓库 | 只限连接。 在 pyodbc 路径中,在 extra_params 中设置 MARS_Connection=no。 Django 迁移和其他 SQL Server 功能不被支持。 |
| Azure Synapse Analytics | 仅限连接。 Django 迁移和其他 SQL Server 功能不被支持。 |
数据库驱动兼容性
mssql-django2.0 可通过两种 Python 数据库驱动程序中的任意一种进行连接,并且可为每个数据库别名单独选择。 欲了解更多信息,请参见 为 mssql-django 选择数据库驱动程序。
| Python 驱动程序 | 支持状态 | Connectivity |
|---|---|---|
pyodbc |
完全支持(默认值) | Microsoft SQL Server ODBC 驱动程序 17 或 18,需单独安装 |
mssql-python |
完全支持(可通过 python_driver 选项启用) |
内置安装,没有单独安装 |
ODBC 驱动程序兼容性
在路径上pyodbc,后端默认为 SQL Server 的 ODBC 驱动 18,如果未安装版本 18,则会自动退回到 ODBC 驱动 17。 用 driver 数据库配置中的选项覆盖默认设置。 明确的值不会回退。
| ODBC 驱动程序 | 支持状态 |
|---|---|
| Microsoft ODBC Driver 18 for SQL Server | 完全支持(默认值) |
| Microsoft ODBC Driver 17 for SQL Server | 完全支持(回退) |
| FreeTDS ODBC 驱动程序 | 在 pyodbc 路径上受支持 |
路径 mssql-python 无视这个 driver 选项。
有关安装说明,请参阅下载 ODBC Driver for SQL Server。
操作系统兼容性
mssql-django 2.0 要求 mssql-python,因此包仅在存在兼容 mssql-python 发行版的地方安装。 即使所有数据库别名都使用 pyodbc,该要求同样适用。
| 操作系统 | Architecture | 支持状态 |
|---|---|---|
| Windows 11、Windows Server 2019、2022 和 2025 | x64 | 支持 |
| Windows 11、Windows Server 2022 和 2025 | ARM64 | 支持于 Python 3.11 及更高版本 |
| macOS 15及以后版本 | 英特尔,苹果硅 | 支持 |
| 使用 glibc 2.28 或更高版本的 Linux,如 Ubuntu 22.04 和 24.04、Debian 11 和 12,以及 Red Hat Enterprise Linux 8 和 9 | x64、ARM64 | 支持 |
| 采用 musl 1.2 或更高版本的 Linux,例如 Alpine Linux | x64、ARM64 | 支持 |
| SUSE Linux Enterprise Server | ARM64 | 不支持 |
不支持平台上的项目仍用 mssql-django 1.8.0版本,这并不要求 mssql-python。
在路径pyodbc上,单独安装 Microsoft ODBC for SQL Server 驱动程序。 安装步骤因操作系统而异。 有关特定于平台的设置,请参阅 安装 mssql-django 。
功能兼容性
以下表格列出了 Django 和 SQL Server 的功能及其在 mssql-django 后端中的支持状态。 有关不支持的功能的更多详细信息,请参阅 mssql-django 中的限制和不支持的功能。
Django ORM 功能
| 功能 / 特点 | mssql-django 支持 |
|---|---|
| 迁移 | Yes |
QuerySet API(应用程序接口) |
Yes |
JSONField |
Yes |
bulk_create / bulk_update |
Yes |
| 数据库事务 | Yes |
inspectdb 与 --schema |
Yes |
DISTINCT ON |
No |
__regex
/
__iregex 查找 |
部分(需要配置 CLR 程序集;在 Azure SQL 数据库 中不可用) |
SmallAutoField |
Yes |
select_for_update() |
是(NOWAIT 且 SKIP_LOCKED;of 不受支持) |
| 窗口函数 | Yes |
GeneratedField (计算列) |
是(Django 5.0 及更高版本) |
CompositePrimaryKey |
部分 (Django 5.2 及更高版本;请参阅限制) |
db_comment |
是 (Django 4.2 及更高版本) |
覆盖索引 (include) |
是 (Django 4.2 及更高版本) |
NthValue |
No |
SQL Server功能
| 功能 / 特点 | mssql-django 支持 |
|---|---|
| 加密连接 (TLS) | Yes |
| 始终加密 (Always Encrypted) | Yes |
| Microsoft Entra 身份验证 | Yes |
| 多个活动的结果集 (MARS) | 是的,在 pyodbc 路径上。 当别名所用的是 Windows 上的 Microsoft ODBC 驱动时,后端会启用 MARS。 该 mssql-python 路径从未启用MARS并拒绝该 MARS_Connection 关键词。 |
| 存储过程 | 是(通过 cursor.execute) |
SNAPSHOT 隔离 |
是(需要数据库级配置) |
| 只读路由 | Yes |
依赖项要求
该 mssql-django 包会自动安装以下依赖项:
| 依赖 | Purpose | 所需版本 |
|---|---|---|
| Django | Web 框架 | >=5.2,<6.2 |
pyodbc |
Python 默认 ODBC 数据库驱动程序 | >=3.0 |
mssql-python |
Python数据库驱动。 无条件安装,且仅在别名选择启用时使用。 | >=1.15.0 |
tzdata |
用于标准库 zoneinfo 模块的 IANA 时区数据库,在操作系统未提供该数据库时使用 |
Any |
该pyodbc路径还需要在主机系统上安装 Microsoft ODBC 驱动 for SQL Server。 该 mssql-python 路径没有单独安装ODBC驱动。 有关详细信息,请参阅 安装 mssql-django。
版本控制和重大更改策略
- 主要版本(2.0):可更改支持的 Python、Django、SQL Server 和平台矩阵,并可添加或移除依赖。 破坏性变更只会出现在主要版本中。
- 次要版本 (1.6、1.7):包括新的 Django 版本支持、新功能和 bug 修复。 保持向后兼容性。
- 补丁版本 (1.7.1、1.7.2、1.7.3、1.7.4):仅包含漏洞修复。
团队在发行说明中记录重大更改。 有关特定版本的说明,请参阅 mssql-django 的新增内容。
如何保持最新状态
mssql-django 后端会发布新版本,以跟进 Django 的版本发布。 升级 Django 时检查更新。
检查已安装的版本
验证当前已安装的版本:
pip show mssql-django
升级到最新版本
更新到最新版本:
pip install --upgrade mssql-django
订阅更新
获取支持
Microsoft通过GitHub和社区渠道提供支持mssql-django。
GitHub 问题
在 GitHub 上报告问题并请求新功能:
报告问题时,请包括你的Django版本、Python版本、SQL Server版本、Python数据库驱动及其版本,以及问题的最小复制品。
Contribute
欢迎社区捐款。 有关参与者许可协议(CLA)和提交过程的详细信息,请参阅 贡献指南。
Community
- Stack Overflow:使用
django和sql-server标记问题。 - Django 文档
- Azure Python 开发人员中心