我正在尝试将我的 Django 应用程序连接到 SQL Server 2016。我尝试使用 django-pyodbc,但它不支持 Django 1.11。相反,我安装了 django-mssql 1.8。当我尝试运行该应用程序时,我...
我正在尝试将我的 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
并 execute_from_command_line(sys.argv)
在manage.py中。
这是我的 settings.py 中的数据库:
DATABASES = {
'default': {
'ENGINE': 'sqlserver_ado',
'NAME': 'TEST2',
'HOST': 'PCNAME\SQLEXPRESS',
'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
以下是我的要求.txt:
django==1.11
mysqlclient==1.3.10
django-mssql==1.8
使用 mssql-django ,我们可以使用 Windows 身份验证和 SQL Server 身份验证将 Django 连接到 MSSQL(SQL Server)。我使用 SQL Server 2019 Express。
使用 Windows 身份验证,要使用 mssql-django ,请将以下代码设置为 \'settings.py\'。以下代码是同一台 Windows 计算机(localhost)中的 Django 和 MSSQL 的示例,必须按如下方式配置数据库设置:
ENGINE
必须是 \'mssql\'
NAME
表示数据库名称“test”
HOST
是 Windows 计算机名称(设备名称),在本例中为“DESKTOP-QVRCPTA”
PORT
应保持空白,因为设置任何端口号都会出错,例如 \'2244\'、\'9877\' 甚至 \'1433\'(这是 MSSQL 的默认端口号)
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql', # Must be "mssql"
'NAME':'test', # DB name "test"
'HOST':'DESKTOP-QVRCPTA\SQLEXPRESS', # <server>\<instance>
'PORT':'', # Keep it blank
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
此外,可以将 \'DESKTOP-QVRCPTA\' 替换为 \'localhost\',并将 \'USER\' 和 \'PASSWORD\' 替换为 空字符串 ,并删除 \'PORT\',如下所示,以使用 Windows 身份验证将 Django 连接到 MSSQL:
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql',
'NAME':'test',
'USER':'', # Keep it blank
'PASSWORD':'', # Keep it blank
'HOST':'localhost\SQLEXPRESS', # "localhost" is also possible
# 'PORT':'', # Can be removed
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
使用 SQL Server 身份验证,要使用 mssql-django ,请将 Windows 身份验证的代码(如上所示)设置为 \'settings.py\',其中 \'USER\' 和 \'PASSWORD\'。Windows 身份验证和 SQL Server 身份验证的代码之间的区别仅在于 \'USER\' 和 \'PASSWORD\':
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql',
'NAME':'test',
'USER':'john', # Username "john"
'PASSWORD':'johnpw', # Password "johnpw"
'HOST':'DESKTOP-QVRCPTA\SQLEXPRESS',
'PORT':'',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
此外,与 Windows 身份验证的代码相同,可以将 \'DESKTOP-QVRCPTA\' 替换为 \'localhost\',并删除 \'PORT\',如下所示,以使用 SQL Server 身份验证将 Django 连接到 MSSQL:
# "settings.py"
DATABASES = {
'default':{
'ENGINE':'mssql',
'NAME':'test',
'USER':'john',
'PASSWORD':'johnpw',
'HOST':'localhost\SQLEXPRESS', # "localhost" is also possible
# 'PORT':'', # Can be removed
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
}
}
接下来,安装最新的包 mssql-django :
pip install mssql-django
然后,进行迁移并迁移:
python manage.py makemigrations && python manage.py migrate
然后,创建超级用户:
python manage.py createsuperuser
现在,我们可以使用 Windows 身份验证和 SQL Server 身份验证将 Django 连接到 MSSQL,然后为“test”数据库创建表。