Django 1.9+ 连接 SQL Server 数据库的解决方案
本文详细记录了在 Windows 环境下将 Django 项目后端数据库从 SQLite 迁移至 SQL Server 的完整过程。针对 Django 1.9 及以上版本默认不支持 SQL Server 的问题,文章对比了 pymssql、django-mssql 及 django-pyodbc-azure 三个第三方库的兼容性,最终推荐通过安装 django-pyodbc-azure 实现 makemigrations 及数据读写功能的正常运作,为 Django 开发者提供可靠的数据库对接方案。
在 Windows 系统中进行 Python 开发已有一段时间。通常情况下,只要系统正确安装了 Python 环境,大多数代码都能顺利运行。然而,当项目需要调用微软特定的 API 时,无论是 Java 还是 Python 技术栈,往往会出现兼容性问题,导致“水土不服”的现象。
本文以将 Mac 环境下开发的 Django 项目迁移至 Windows 10 系统为例。初期为了开发便捷,使用了 SQLite3 作为后端数据库。但根据单位要求,项目正式上线必须使用 SQL Server。鉴于 Django 1.9 默认不支持微软数据库,我开始搜索相关解决方案。起初有人建议安装名为 pymssql 的包,因此我尝试安装了该库。
pip install pymssql
安装完成后,我配置了数据库相关参数,并兴奋地执行了命令 python manage.py makemigrations 进行迁移文件生成。
然而执行失败,系统报错提示“no module named sqlserver_ado”,表明缺少必要的模块支持。
针对该错误,我继续搜索解决方案。有人建议安装 django-mssql 库。由于该库名称中包含“django”,我认为其可靠性较高,于是进行了安装。
pip install django-sqlserver
安装 django-mssql 后,再次运行 makemigrations 命令。虽然之前“no module named sqlserver_ado”的错误不再出现,但系统又抛出了新的错误:“no module named xxx.backends.util”。这一新错误令人困惑。
通过搜索引擎查询,发现该问题可能与 Django 版本过高有关,建议降低 Django 版本。我尝试将 Django 降级至 1.8 版本,问题依旧存在;随后降级至 1.7 版本,仍无法解决;最后尝试降级至 1.6 版本,却发现该版本连 Django 1.9 的项目结构都无法支持。经过多次尝试,降级方案均告失败。
尽管网上有观点认为通过某些技巧可以让 Django 1.9 支持 SQL Server,但我继续搜索发现,有用户推荐 django-pyodbc-azure 库似乎能兼容 Django 1.9。尽管该库名称中未直接包含“sql”字样,且我对其实用性持保留态度,但仍决定下载并测试。
pip install django-pyodbc-azure
安装 django-pyodbc-azure 后,再次执行 python manage.py makemigrations 命令,此次成功执行。检查数据库后发现,所有数据表均已正确创建。经过多项操作测试,数据读取和写入功能均正常,确认该方案可行。
以上内容分享了让 Django 支持 SQL Server 作为后端数据库的具体方法,旨在为遇到类似问题的开发者提供参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









