连接 Django 和 MSSQL 服务器
Connecting Django with MSSQL server
我正在尝试将我的 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.pyexecute_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
如 django-mssql documentation 中所述,最新版本仅支持 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 库作为驱动程序,那么您的驱动程序将为 'driver':'Free TDS'
这里的 13 是默认版本。如果您安装的版本与此不同,请使用该版本号而不是 13
关注官方django documentation(目前是django 3.1)
django-mssql-backend 应该被使用。 Django-MSSQL-backend django 数据库适配器是 django-pyodbc-azure 的一个分支,其中:
- 支持 Django 2.2、3.0
- 支持 Microsoft SQL 服务器 2008/2008R2、2012、2014、2016、2017、2019
- 与 SQL 服务器、SQL 服务器本机客户端和 FreeTDS ODBC 驱动程序的 Micosoft ODBC 驱动程序兼容
其他解决方案 django-pyodbc-azure, django-sqlserver and django-mssql 截至 2020-11 年似乎已过时。
请检查此 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",
},
},
}
我正在尝试将我的 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.pyexecute_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
如 django-mssql documentation 中所述,最新版本仅支持 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 库作为驱动程序,那么您的驱动程序将为 'driver':'Free TDS' 这里的 13 是默认版本。如果您安装的版本与此不同,请使用该版本号而不是 13
关注官方django documentation(目前是django 3.1) django-mssql-backend 应该被使用。 Django-MSSQL-backend django 数据库适配器是 django-pyodbc-azure 的一个分支,其中:
- 支持 Django 2.2、3.0
- 支持 Microsoft SQL 服务器 2008/2008R2、2012、2014、2016、2017、2019
- 与 SQL 服务器、SQL 服务器本机客户端和 FreeTDS ODBC 驱动程序的 Micosoft ODBC 驱动程序兼容
其他解决方案 django-pyodbc-azure, django-sqlserver and django-mssql 截至 2020-11 年似乎已过时。
请检查此 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",
},
},
}