Python 连接Django与MSSQL服务器

Python 连接Django与MSSQL服务器,python,sql-server,django,django-mssql,Python,Sql Server,Django,Django Mssql,我正在尝试将我的Django应用程序连接到SQL Server 2016。我尝试过使用django pyodbc,但它不支持django 1.11。相反,我安装了django mssql 1.8。当我尝试运行该应用程序时,会出现此错误 TypeError was unhandled by user code Message: 'NoneType' object is not callable 在manage.py中的处,从命令行(sys.argv)执行 这是settings.py中的我的数据库

我正在尝试将我的Django应用程序连接到SQL Server 2016。我尝试过使用django pyodbc,但它不支持django 1.11。相反,我安装了django mssql 1.8。当我尝试运行该应用程序时,会出现此错误

TypeError was unhandled by user code
Message: 'NoneType' object is not callable
在manage.py中的
处,从命令行(sys.argv)执行

这是settings.py中的我的数据库

DATABASES = {
'default': {
    'ENGINE': 'sqlserver_ado',
    'NAME': 'TEST2',
    'HOST': 'PCNAME\SQLEXPRESS',
    'USER': '',
    'PASSWORD': '',
    'OPTIONS' : {
     'provider': 'SQLOLEDB',
     'use_mars': True,
     },
}
}
我尝试了默认和SQLOLEDB提供程序,但总是出现相同的错误。我也尝试过设置和不设置用户和密码,但错误保持不变。我可以很好地连接到本地MySQL数据库

我正在运行Windows 10、Visual Studio 2015、SQL Server Express 2016

编辑:

这是来自
pip freeze

appdirs==1.4.3
Django==1.11
django-mssql==1.8
mysqlclient==1.3.10
packaging==16.8
pyodbc==4.0.16
pyparsing==2.2.0
pytz==2017.2
six==1.10.0
这是我的requirements.txt

django==1.11
mysqlclient==1.3.10
django-mssql==1.8
如中所述,最新版本只支持Django 1.8,因此不能与Django 1.11一起使用


您必须等到软件包支持较新版本的django才能升级。这就是在将Django与不受支持的数据库后端一起使用时的问题,您依赖于第三方软件包的维护,而这个软件包似乎很难跟上Django的最新版本。

您可以使用Django pyodbc azure,因为它支持最新版本的Django 2.0。 安装后,您需要在设置文件中进行编辑,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': DB_NAME,
        'USER': USER,
        'PASSWORD': PASSWORD,
        'HOST': HOST,
        'PORT': PORT,
        'OPTIONS': {
            'driver': 'ODBC Driver 13 for SQL Server',
            'unicode_results': True,

        },
    }
}
如果您安装TDS库作为驱动程序,那么您的驱动程序将是“驱动程序”:“免费TDS” 这里13是默认版本。如果您安装的版本与此不同,请使用该版本号,而不是官方版本(目前为django 3.1)后的13 应该使用Django MSSQL后端Django数据库适配器是Django pyodbc azure的一个分支,它:

  • 支持Django 2.2、3.0
  • 支持Microsoft SQL Server 2008/2008R2、2012、2014、2016、2017、2019
  • 与用于SQL Server的Micosoft ODBC驱动程序、SQL Server本机客户端和FreeTDS ODBC驱动程序兼容
其他解决方案以及2020-2011年的解决方案似乎已经过时。

请检查此项。首先需要安装mssql django包,数据库配置如下

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "Todo",
        "USER": "",
        "PASSWORD": "",
        "HOST": "127.0.0.1",
        "PORT": "1433",
        "OPTIONS": {"driver": "ODBC Driver 17 for SQL Server",
                    },
    },
}

您是否通过pip安装了mssql?是的,我通过pip安装了django mssql,并将其添加到requirements.txt中