示例环境
- 系统版本:Windows10 professional
- 数据库版本: SQL server 2012
- Python版本:Python 3.6.5
- Django版本: Django2.2
- 连接数据库工具:Navicat Premium & SSMS
Django连接SQL Server前提:
1. 安装SQL Server 2012
2. 配置注意事项
- 【服务器属性–安全性】开启SQL server和Windows身份认证模式。
- 【服务器属性–连接】开启允许远程连接到此服务器。
- 建立远程账户能正常访问和基本的增删改查权限,可以使用默认的sa(拥有最高权限)账户,熟悉后可以自己创建账户降低权限。
- 安装SSMS和Navicat Premium软件(可以只安装一个),目的是用ODBC驱动连接SQL Server。
3.Django连接SQL server步骤:
1.安装必要的django环境
`
pip install django==2.2
pip install django-pyodbc
pip install django-mssql-backend
根据官网的介绍django-pyodbc-azure 只能支持到 django 2.1。如果涉及到2.2及以上版本时,可以使用django-mssql-backend。
2.数据库驱动安装配置检查
- 下载安装ODBC Dirver 17 for SQL Server。
- 配置ODBC数据源(64位):控制面板->管理工具->ODBC数据源(64位)。
- 点击添加.
然后一直下一步,也可以对数据库进行选择默认数据库。
点击测试出现测试成功,说明这个ODBC已经可以使用。
ODBC常见失败原因。
- 数据库的ODBC驱动并未安装。
- SQL server的验证方式选择的是windows验证,一定要注意,这里的验证要设置成sql server验证,也就是带用户名和密码的验证。具体的设置方式,这里不再详述,非常简单,自行百度。
- SQL server默认的tcp端口号是1433,检查是否开启。打开SQL server配置管理器,找到SQL Server 网络配置,检查TCP/IP是否启用,以及1433端口是否开启。IPALL
- 系统防火墙禁止1433端口,可以整个关掉防火墙,或者添加防火墙写入策略,可以通过修改1433端口在开放,确保安全。
3.Django的settings.py文件数据库配置。
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'db',
'USER': 'sa',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': '1433',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'MARS_Connection': True,
},
},
}
这里'ENGINE': 'sql_server.pyodbc'
和
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'MARS_Connection': True,
},
必须设置,并且driver
要根据你所用的ODBC数据源的具体版本来具体设置,一定不能出错。当然'driver': 'SQL Server Native Client 11.0'
也有同学使用这个数据源,这也是没有任何问题的。
提示
配置需要谨慎,一定要仔细认真,数据库信息一定要填写准确,bug往往在最简单的地方出现。
至此,django2.2连接SQL Server作为数据库的配置已经完成,可以开始你的项目研发了。
如果采用该方法依旧配置失败,数据库无法使用,请检查django有关数据库的第三方依赖包的版本,低版本的依赖包也会导致配置失败。