Использование сервера sql на django
У меня есть подписка в моем django env
Django==1.8.1
django-mssql==1.6.2
django-pyodbc==0.2.8
pyodbc==3.0.10
pywin32==219
sql-server.pyodbc==1.0
и следующее в моей settings.py
DATABASES = {
'default': {
'NAME': 'db_name',
'ENGINE': 'sqlserver_ado',
'HOST': 'host_name\\SQLEXPRESS',
'USER': 'user_name',
'PASSWORD': 'password',
}
}
Но когда я пытаюсь перенести его, я сталкиваюсь со следующей ошибкой. Я что-то упускаю?
django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'base', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'
Error was: cannot import name 'BaseDatabaseWrapper'
6 ответов
Я использовал django 1.8, и решил эту проблему путем понижения до django 1.6. Это библиотеки, установленные в моем virtualenv после понижения версии, и когда я начал работать.
(env)$ pip list
argparse (1.2.1)
Django (1.6)
django-pyodbc (0.2.8)
pip (1.5.4)
pyodbc (3.0.10)
setuptools (2.2)
wsgiref (0.1.2)
Попробуйте эти настройки с Django версии 1.8.
DATABASES = {
'default': {
'ENGINE': 'sqlserver_ado',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '1433',
'OPTIONS': {
'provider': 'SQLOLEDB', #SQLNCLI11 , SQLOLEDB
'use_legacy_date_fields': 'True',
#'extra_params' : 'DataTypeCompatibility=80;MARS Connection=True',
#'connect_timeout': 0
}
}
}
Попробуйте использовать django-pyodbc
вместо.
В settings.py
, заменить ENGINE
установка с этим:
'ENGINE': 'django_pyodbc',
Для Django версии 1.11 я использую следующие настройки:
DATABASES = {
'default': {
'NAME': 'DbName',
'ENGINE': 'sql_server.pyodbc',
'HOST': 'localhost',
'PORT': '1433',
'USER': 'DBUser',
'PASSWORD': 'Db password',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server'
}
}
}
Если вы добавите такую опцию, как:
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server'
}
Вы должны убедиться, что вы уже установили драйвер OCBC 13 для SQL Server. (Это будет внутри "Администрирование"> "Источник данных OCBC", и когда вы нажмете кнопку "Добавить", этот драйвер должен быть в списке, иначе вам придется установить)
Если все еще не работает, попробуйте установить: pip install django-pyodbc-azure
После потери поиска в django docs, и я думаю, что большинство ссылок в Google, касающихся Django с MSSQL Server ниже, являются моими конфигурациями.
Моя версия Python
Python 3.7.0 (v3.7.0:1bf9cc5093, 27 июня 2018 г., 04:59:51) [MSC v.1914 64 бит (AMD64)]
Требуемые пакеты:
Джанго ==1.11.16
Джанго-pyodbc-лазурь == 2.1.0.0
pyodbc = 4.0.24
pywin32 == 224
Все вышеперечисленные пакеты являются самыми последними на момент публикации данного сообщения.
Для загрузки pywin32 используйте эту ссылку (последняя версия 224)
https://github.com/mhammond/pywin32/releases
После этого вам нужно скачать драйвер SQL SERVER, в настоящее время я нахожусь на Windows 10, поэтому я скачал последний драйвер SQL Server 2017.
https://www.microsoft.com/en-us/download/details.aspx?id=56567
После этого в файле Django Settings.py это моя конфигурация
Если вы не указали версию своего драйвера в поле параметров, это не сработает, поэтому будьте внимательны.
DATABASES = {
'default': {
'NAME': 'abc', #this is your database name
'ENGINE': 'sql_server.pyodbc', #this is your Engine
'HOST': 'x.x.x.x', #MSSQL SERVER ip
'USER': 'user', # username
'PASSWORD': 'password', # password
'OPTIONS': { # mention your Driver Version
'driver': 'ODBC Driver 17 for SQL Server' # Mine Driver version is 2017 so that i mentioned 17 , mention According to yourself
}
}
}