Django 连接到 SQL Server - django/sql_server - pyodbc

W K*_*nny 8 sql-server django

我尝试安装,django_pyodbc但是当我尝试进行迁移时出现错误:

django.core.exceptions.ImproperlyConfigured:不支持 Django 2.1。

我的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',
    },
},
Run Code Online (Sandbox Code Playgroud)

当我尝试安装 django-pyodbc-azure 时,出现了另一个错误:

尝试使用“django.db.backends.XXX”,其中 XXX 是以下之一:“mysql”、“oracle”、“postgresql”、“sqlite3”

我的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',
    },
},
Run Code Online (Sandbox Code Playgroud)

那么我应该怎么做才能连接SQL Server 2012?

W K*_*nny 3

我确实搜索了这个问题很长时间。

真的很生气,没有人真正告诉细节,这就是为什么我想写下来帮助那些即将面临这个问题的人。

我发现我应该执行以下操作,以便我可以在 Django 中运行 pyodbc。

1.首先安装“ODBC Driver 11 for SQL Server & Install pyodbc”

  1. 由于我的服务器使用 ODBC 驱动程序 11 来提取数据,因此我应该将其从 17 切换到 11

  2. 在终端中运行 pip install pyodbc

2.设置.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',
    },
}
Run Code Online (Sandbox Code Playgroud)

}

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 = []
Run Code Online (Sandbox Code Playgroud)