django默认支持四种数据库的连接,sqlserver并不在其列,为了连接它,我们可以下载package,配置
常见有几种方法(详见https://www.cnblogs.com/lin135/p/7805727.html)
这里针对工程环境,尝试了方法二和方法四,
方法二:
1、安装必要的组件:
pip install django-sqlserver pyodbc django-mssql
2、修改settings.py的DATABASES:
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'sqlserver',
'NAME': 'MyDB',
'HOST': 'IP',
'PORT': '1433',
'USER': 'name',
'PASSWORD': 'pwd',
# 'OPTIONS': {
# 'DRIVER': 'SQL Server Native Client 11.0',
# },
}
}
django 版本v2.1.0尝试连接提示找不到drive,降低django版本到v1.11.20,连接成功。('options'为可选配置项)
方法四:
1、安装django-pyodbc-azure和pyodbc
pip install django-pyodbc-azure==1.11.15.0 pyodbc==4.0.27
2、修改settings.py的DATABASES:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'MyDB',
'USER': 'user',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': '',
'OPTIONS': {
'driver':'SQL Server Native Client 11.0',
'MARS_Connection': True,
},
},
}
# set this to False if you want to turn off pyodbc's connection pooling
DATABASE_CONNECTION_POOLING = False
此方法安装django-pyodbc-azure v2.1.0.0版本时,dependencies为:(https://pypi.org/project/django-pyodbc-azure/)
- Django 2.1
- pyodbc 3.0 or newer
The old version of django-pyodbc-azure must match with django version, specify an appropriate version number (1.10.x.x for Django 1.10, 1.11.x.x for Django 1.11) at installation like this:
pip install "django-pyodbc-azure<1.11"
pip install "django-pyodbc-azure<2.0"
另外在配置‘option’项时, driver需要和本地环境匹配,可以用下面方法查看本地环境支持的driver
ODBC驱动程序(控制面板-->管理工具-->数据源(ODBC))
或者用python console验证
>>>import pyodbc
>>>pyodbc.drivers()
输出:['SQL Server', 'SQL Server Native Client 11.0', 'ODBC Driver 17 for SQL Server']