我正在尝试将我的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中的execute_from_command_line(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
答案 0 :(得分:2)
正如django-mssql documentation中所述,最新版本仅支持Django 1.8,因此它不适用于Django 1.11。
您必须等到包支持更新版本的django才能升级。当使用不受支持的数据库后端的Django时,这就是问题,你依赖于第三方软件包的维护,而且这个问题似乎无法与Django保持同步。
答案 1 :(得分:0)
您可以使用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是默认版本。如果您安装的版本不同,则使用该版本号而不是13
答案 2 :(得分:0)
以下是官方django documentation(目前为django 3.1) 应该使用django-mssql-backend。 Django-MSSQL后端 django数据库适配器是 django-pyodbc-azure 的一个分支,
截止2020-11年,其他解决方案django-pyodbc-azure,django-sqlserver和django-mssql似乎已经过时。
答案 3 :(得分:0)
请检查此 link。首先你需要安装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",
},
},
}