Django 连接 SQL Server 数据库的配置与排错指南

远山来客
远山来客
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何在 Django 项目中配置 SQL Server 数据库。由于 Django 默认不支持该数据库,需安装 django-pyodbc-azure 等依赖。重点解析 settings.py 中的 ENGINE、HOST、PORT 及 OPTIONS 配置,特别是 driver 参数的设置,以解决常见的连接失败问题。

注:本文基于 Python 3.5 与 Django 2.0.4 版本进行说明。

SQL Server 是微软开发的关系型数据库,支持 Windows 和 Linux 平台。尽管因其闭源特性导致使用率相对较低,但在部分以爬虫业务为主的公司中,SQL Server 仍被广泛用作主要数据存储方案。

一、环境依赖打包

熟悉 Django 的开发者知道,Django 默认支持 PostgreSQL、MySQL、Oracle 和 SQLite 四种数据库,通常只需修改 settings.py 中的 DATABASES 配置即可。然而,若要使用 SQL Server,则需额外引入第三方支持库。

因此,在使用 SQL Server 前,必须手动导入必要的依赖包。

 

如示意图所示,所需的全部依赖包均可通过 pip install 命令直接安装,无需在 Django 代码中额外导入模块。其中,django-pyodbc-azure 是必须安装的包,缺失该依赖会导致程序运行崩溃。

二、代码配置

完成依赖安装后,主要工作集中在修改项目根目录下的 settings.py 文件。

DATABASES = {
  'default': {
    'NAME': 'screen',
    'ENGINE': 'sql_server.pyodbc',
    'HOST': '127.0.0.1',
    'PORT': '1433',
    'USER': 'user',
    'PASSWORD': 'password',
    'OPTIONS':{
      'driver':'SQL Server Native Client 10.0',
    }
  }
}

在配置过程中,需特别注意以下关键点:

1. 'ENGINE' 键值对为固定写法。该配置通常需要在安装 pyodbc 后生效(具体依赖关系因版本而异,建议确保环境完整)。

2. SQL Server 默认端口号为 1433。部分企业环境可能修改了默认端口,建议在配置前确认目标服务器的实际端口号是否被占用或更改。

3. 许多开发者在连接默认数据库时忽略 'OPTIONS' 配置,导致连接失败。早期尝试中,即便在 ODBC 层面调整数据库引擎(如 Windows 开发环境),若未在 Django 配置中显式指定 'OPTIONS',仍无法建立连接。添加 'OPTIONS' 配置后,问题得以解决。

本文整理自较早的项目经验,可能存在疏漏。若读者发现错误或有补充建议,欢迎留言指正,我将及时更新。希望本文能帮助遇到类似问题的开发者,感谢支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。