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

Ubuntu Server部署Django连接MS SQL Server遇SyntaxError求助

解决Django + MS SQL Server在Ubuntu 20.04上的SyntaxError问题

首先,你遇到的SyntaxError: invalid syntax是Python版本不兼容导致的:代码里except ImportError, e:是Python 2的异常捕获语法,而你用的是Python 3.8,Python 3要求写成except ImportError as e:。这个问题出在sql-server.pyodbc库上,这个库是针对Python 2的老旧版本,和你的Python 3环境完全不兼容。

下面是具体的修复步骤:

1. 移除冲突的老旧库

你同时安装了django-mssql-backend和sql-server.pyodbc,这两个库功能重叠,而且sql-server.pyodbc==1.0是Python 2时代的产物,直接卸载它:

pip uninstall sql-server.pyodbc -y

2. 升级django-mssql-backend到兼容Python 3的版本

你当前用的django-mssql-backend==2.8.1虽然支持Python 3,但建议升级到和Django 3.0匹配的最新兼容版本(比如3.0.x系列),确保语法完全适配Python 3:

pip install --upgrade django-mssql-backend~=3.0.0

3. 修正数据库连接配置

你的Ubuntu环境里的HOST配置有问题:Windows上的localhost\\SQLEXPRESS是命名实例的写法,但在Linux的ODBC驱动里,需要用IP地址+端口或者调整为ODBC兼容的命名实例格式:

  • 如果是连接Windows上的远程SQL Server Express,把HOST改成你的Windows机器IP,1433(默认SQL Server Express的命名实例端口通常是1433,若有修改请对应调整);
  • 同时确保Windows的SQL Server允许远程连接,且防火墙开放了对应端口。

修正后的配置示例:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'mdm_db',
        'USER': 'mdmuser',
        'PASSWORD': 'mdmuser',
        'HOST': '192.168.x.x,1433',  # 替换成你的Windows机器实际IP
        'PORT': '',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            # 可选:添加加密相关参数(根据你的SQL Server配置调整)
            'extra_params': 'Encrypt=no'
        },
    },
}

4. 重新验证依赖和运行

先确认依赖状态正常:

pip freeze

确保输出里没有sql-server.pyodbc,且django-mssql-backend是3.0.x版本。然后重新执行迁移并启动服务:

python manage.py migrate
python manage.py runserver 0.0.0.0:8000

额外说明

关于你提到的pyodbc构建wheel失败:这是Ubuntu上缺少编译依赖导致的临时问题,你已经安装了unixodbc-dev、python3-dev等必要组件,最终能安装成功是正常的,你当前的pyodbc 4.0.30版本完全适配Python 3.8。

内容的提问来源于stack exchange,提问作者Admin Avenger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:08:11