Mac OS下如何连接Django与Docker部署的SQL Server?
修复Mac OS下Django连接Docker部署SQL Server的报错问题
执行python3 manage.py runserver后出现ModuleNotFoundError: No module named 'sql_server',最终触发ImproperlyConfigured错误,提示'sql_server.pyodbc'不是可用的数据库后端。以下是具体修复步骤:
1. 确认依赖安装环境
- 激活项目虚拟环境(如你的
myenv)后,重新安装mssql-django:source myenv/bin/activate pip install mssql-django - 执行
pip list检查mssql-django是否已成功安装在虚拟环境中。
2. 修正数据库配置的引擎参数
mssql-django包的正确数据库引擎名称为'mssql',而非旧版本的'sql_server.pyodbc',修改settings.py中的DATABASES配置:
DATABASES = { 'default': { 'ENGINE': 'mssql', 'NAME': 'test1', 'HOST': 'localhost', 'PORT': 1433, 'USER': 'SA', 'PASSWORD': 'xxxxx', 'OPTIONS': { 'driver': 'ODBC Driver 18 for SQL Server', 'extra_params': 'TrustServerCertificate=yes', # 解决自签名证书验证问题 }, } }
注意:Mac OS推荐使用
ODBC Driver 18 for SQL Server,兼容性优于版本13。
3. 安装Mac OS所需的ODBC驱动
通过Homebrew安装官方ODBC驱动:
brew tap microsoft/mssql-release brew install msodbcsql18 mssql-tools18
安装完成后,可测试Docker中SQL Server的连通性:
sqlcmd -S localhost,1433 -U SA -P 'xxxxx' -d test1 -C
-C参数用于信任服务器证书,避免SSL连接报错。
4. 验证Docker容器状态
- 确认SQL Server容器正在运行:
docker ps - 检查容器端口映射是否正确,确保宿主机1433端口已映射到容器1433端口(启动容器时需添加
-p 1433:1433参数)。
5. 重新启动Django服务
激活虚拟环境后执行:
python manage.py runserver
内容的提问来源于stack exchange,提问作者Sma Ham
相关产品推荐
相关产品推荐

