3
django.core.exceptions.ImproperlyConfigured: 'django-pyodbc-azure' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
    'mysql', 'oracle', 'postgresql', 'sqlite3'

次の DATABASE 設定に切り替えようとしましたが、うまくいきませんでした。

DATABASES = {
    'default': {
        'ENGINE': 'django-pyodbc-azure',  #None of these work either: 'django_pyodbc' 'sqlserver_ado', 'sql_server.pyodbc', 'django-pyodbc-azure','pyodbc'
        'HOST': 'test-server-local',
        'NAME': 'db-name',
        'USER': 'sql_username',
        'PASSWORD': 'password',
        'PORT': '1433'
            # 'OPTIONS': {
            # 'driver': 'ODBC Driver 17 for SQL Server'
            # 'driver': 'SQL Server Native Client 11.0',
            # 'provider': 'SQLOLEDB' # Have also tried 'SQLCLI11' and 'SQLOLEDB'
            # 'extra_params': 'DataTypeCompatibility=80'
        # }
    }
}

SQLLite データベースにアクセスでき、pyodbc インポートを (Python 経由で直接) 実行できましたが、これを Django で使用することはできません。

スタックオーバーフローに関する次の質問をすでに参照しました(運が悪い)。 ソリューション 1 ソリューション 2 と Django/SQL Server のバージョンは、私がセットアップしたものよりかなり古いものです。他のオプションがあるかどうかを確認せずに SQL Server データベースをサポートするためだけに、Django v2.1 から下位バージョンにダウングレードしたくありません。

次のサイト パッケージを確認し、環境/システム パス変数に追加しました。

    C:\Users\\AppData\Local\Programs\Python\Python37-32\Lib\site-packages
    - django_pyodbc
    - django_pyodbc-2.0.0a1.dist-info
    - django_mssql-1.8.dist-info
    - django_pyodbc_azure-2.1.0.0.dist-info

次のコードを実行すると、データベースにヒットしてデータが返されるので、Python だけでなく、おそらく Django であることがわかります。

import pyodbc 
server = 'test-server-local' 
database = 'TEST-DB'
username = 'sql_username'
password = 'password'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

cursor.execute("SELECT DepartmentName, DepartmentID from dbo.Departments;") 
row = cursor.fetchone() 
while row: 
    print(row.DepartmentID, row.DepartmentName)
    row = cursor.fetchone()
4

2 に答える 2