Django se conecta a SQL Server - django / sql_server - pyodbc

8

Intenté instalar django_pyodbcpero cuando intento hacer migraciones recibí el error:

django.core.exceptions.ImproperlyConfigured: Django 2.1 no es compatible.

My setttings.py:

'Test_DB': {
    'ENGINE': 'django_pyodbc',
    'NAME': 'TEST',
    'HOST': '127.0.0.1',
    'USER': 'sa',
    'PASSWORD': '123456',
    'OPTIONS': {
        'driver': 'ODBC Driver 12 for SQL Server',
    },
},

Cuando intento instalar django-pyodbc-azure, aparece el otro error:

Intente usar 'django.db.backends.XXX', donde XXX es uno de: 'mysql', 'oracle', 'postgresql', 'sqlite3'

My setttings.py:

'Test_DB': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'TEST',
    'HOST': '127.0.0.1',
    'USER': 'sa',
    'PASSWORD': '123456',
    'OPTIONS': {
        'driver': 'ODBC Driver 12 for SQL Server',
    },
},

Entonces, ¿qué debo hacer para poder conectar el SQL Server 2012?

W Kenny
fuente
2
Esto ya ha sido respondido aquí: stackoverflow.com/questions/842831/…
gregory

Respuestas:

2

Busqué este problema durante mucho tiempo.

Realmente me siento enojado porque nadie realmente cuenta los detalles por eso quiero escribir para ayudar a aquellos que están a punto de enfrentar esta pregunta.

Descubrí que debería hacer lo siguiente para poder ejecutar pyodbc en Django.

1. Primero instale "ODBC Driver 11 para SQL Server e instale pyodbc"

  1. Como mi servidor está utilizando ODBC Driver 11 para extraer datos, debo cambiarlo de 17 a 11

  2. Ejecute pip install pyodbc en la terminal

2. settings.py:

DATABASES = {
'MSSQL':
{
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'DB_NAME',
    'USER': 'USER',
    'PASSWORD': 'PWD',
    'HOST': 'IP',
    'PORT': '1433',
    'OPTIONS':{
        'driver': 'ODBC Driver 11 for SQL Server',
    },
}

}

3. views.py:

import pyodbc
from django.conf import settings

connection = pyodbc.connect(
                            "Driver={" + settings.DATABASES['MSSQL']['OPTIONS']['driver'] + "};"
                            "Server=" + settings.DATABASES['MSSQL']['HOST'] + ";"
                            "Database=" + settings.DATABASES['MSSQL']['NAME'] + ";"
                            "UID=" + settings.DATABASES['MSSQL']['USER'] + ";"
                            "PWD=" + settings.DATABASES['MSSQL']['PASSWORD'] + ";"
                            "Trusted_Connection=no;"
                            )

cursor = self.connection.cursor()
query = """SELECT * FROM DB_NAME;"""
cursor.execute(query)
rows = cursor.fetchall()
columns = [column[0] for column in cursor.description]
data = []
W Kenny
fuente