Использование сервера 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)                                          

Вам необходимо установить пакет Python django-sqlserver.

Попробуйте эти настройки с 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 
        }
    }
}
Другие вопросы по тегам