O Django se conecta ao SQL Server - django / sql_server - pyodbc

8

Eu tentei instalar, django_pyodbcmas quando tento fazer migrações, obtive o erro:

django.core.exceptions.ImproperlyConfigured: O Django 2.1 não é suportado.

Meus settings.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',
    },
},

Quando tento instalar o django-pyodbc-azure, recebi o outro erro:

Tente usar 'django.db.backends.XXX', onde XXX é um dos: 'mysql', 'oracle', 'postgresql', 'sqlite3'

Meus settings.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',
    },
},

Então, o que devo fazer para conectar o SQL Server 2012?

W Kenny
fonte
2
Isso já foi respondido aqui: stackoverflow.com/questions/842831/…
gregory

Respostas:

2

Pesquisei esse problema por um longo tempo.

Estou realmente com raiva de que ninguém realmente conte os detalhes, é por isso que quero escrever para ajudar aqueles que estão prestes a enfrentar essa pergunta.

Eu descobri que eu deveria fazer o seguinte produz para que eu possa rodar pyodbc no Django.

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

  1. Como meu servidor está usando o Driver ODBC 11 para extrair os dados, devo alterná-lo de 17 para 11

  2. Execute o pip install pyodbc no 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
fonte