我正在尝试将我的Django应用程序连接到SQL Server2016。我已经尝试使用Django-pyodbc,但它不支持Django 1.11。相反,我安装了Django-MSSQL 1.8。当我尝试运行应用程序时,我会收到此错误。
TypeError was unhandled by user code
Message: 'NoneType' object is not callable
在 execute_from_command_line(sys.argv)
in manage.py。
这是我的数据库。
DATABASES = {
'default': {
'ENGINE': 'sqlserver_ado',
'NAME': 'TEST2',
'HOST': 'PCNAMESQLEXPRESS',
'USER': '',
'PASSWORD': '',
'OPTIONS' : {
'provider': 'SQLOLEDB',
'use_mars': True,
},
}
}
我已经尝试了默认值和SQLoledB提供商,但始终遇到相同的错误。我还尝试过有或没有用户和密码集,但错误仍然相同。我可以连接到本地的mysql db。
我正在运行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
这是我的要求:
django==1.11
mysqlclient==1.3.10
django-mssql==1.8
如django-mssql文档中所述,最新版本仅支持django 1.8,因此它不适用于django 1.11。
。您必须等到包装支持Django的较新版本才能升级。这是当将DJANGO与非支持数据库后端一起使用时的问题,您依赖第三方软件包维护,并且这似乎很难与Django保持最新状态。
使用 mssql-django ,我们可以将 django 连接到 mssql(sql server(与 Windows>strong>和 SQL Server身份验证。*我使用 SQL Server 2019 Express 。
带有 Windows Authentication ,要连接 django to MSSSQL 使用 mssql-django ,将下面的代码设置为'settings.py; 。下面的此代码是 django and mssql in in >同一Windows Computer(local -Host( and &quenne>&quent>必须是'MSSQL;; for 'host'是 Windows Computer Name(设备名称(。*将其空白用于'port',因为如果设置任何端口号,例如,例如。 2244&quot', 9877&quot''否>&quort&quot&quort; wes ; te 是>:
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql', # Must be "mssql"
'NAME':'test', # DB name "test"
'HOST':'DESKTOP-QVRCPTASQLEXPRESS', # <server><instance>
'PORT':'', # Keep it blank
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
此外,'desktop-qvrcpta'可以用>&quort'可以使用空字符串和" ports" " password" " port"> MSSQL 带有 Windows Authentication :
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql',
'NAME':'test',
'USER':'', # Keep it blank
'PASSWORD':'', # Keep it blank
'HOST':'localhostSQLEXPRESS', # "localhost" is also possible
# 'PORT':'', # Can be removed
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
使用 SQL Server Authentication ,以连接 django to MSSSQL 使用 MSSQL-DJANGO strong> Windows Authentication 如上图所示,>&quord and and 'password&quose&quods&quote&quote&quote&quote&quote&quots>'sett>&quort'setterings>&quort;。* Windows Authentication 和 SQL Server Authentication 的代码之间的差异仅是&quot'user&quote'''strong>:
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql',
'NAME':'test',
'USER':'john', # Username "john"
'PASSWORD':'johnpw', # Password "johnpw"
'HOST':'DESKTOP-QVRCPTASQLEXPRESS',
'PORT':'',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
此外,与 Windows Authentication 的代码相同,&quot desktop-qvrcpta; '可以用&quort; localhost;'port; 可以如下所示,如下所示,以连接 django to mssql 带有 sql Server authentication P> 接下来,安装最新的软件包mssql-django : 然后,进行迁移并迁移: 然后,创建超级用户: 现在,我们可以将 django 连接到 mssql 与 Windows Authentication 和 SQL Server Authentication ,然后创建的表格;数据库。# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql',
'NAME':'test',
'USER':'john',
'PASSWORD':'johnpw',
'HOST':'localhostSQLEXPRESS', # "localhost" is also possible
# 'PORT':'', # Can be removed
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
pip install mssql-django
python manage.py makemigrations && python manage.py migrate
python manage.py createsuperuser
官方Django文档之后(当前Django 3.1(应使用Django-MSSQL-BAKEND。 django-mssql-backend django数据库适配器是 django-pyodbc-azure 的叉子,哪个:
- 支持Django 2.2,3.0
- 支持Microsoft SQL Server 2008/2008R2,2014,2014,2016,2017,2017,2019
- 与SQL Server,SQL Server本地客户端的Micosoft ODBC驱动程序兼容,而Freetds ODBC驱动程序
其他解决方案django-pyodbc-azure,django-sqlserver和django-mssql截至2020-11看起来很过时。
您可以使用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
请检查此链接。首先,您需要安装 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",
},
},
}