django-mssql-backend から mssql-django に移行する

この記事では、Django プロジェクトを (django-mssql-backend エンジンを使用した) sql_server.pyodbc パッケージから mssql-django パッケージに移行する方法について説明します。

Overview

mssql-django パッケージは、django-mssql-backendの後継です。 pyodbc を使用するSQL Server用の Django データベース バックエンドが引き続き提供されますが、パッケージ名、エンジン識別子、および新しい Django バージョンのサポートが更新されています。

特徴 django-mssql-backend mssql-django
パッケージ名 django-mssql-backend mssql-django
エンジン sql_server.pyodbc mssql
Django のサポート 2.2, 3.0, 3.1 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0
によって管理されます。 Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

手順 1: Python パッケージを更新する

古いパッケージをアンインストールし、新しいパッケージをインストールします。

pip uninstall django-mssql-backend
pip install mssql-django

requirements.txt ファイルを使用する場合は、パッケージ参照を置き換えます。

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=1.7

手順 2: DATABASE エンジンを更新する

settings.pyで、ENGINEの値を sql_server.pyodbc から mssql に変更します。

# Before
DATABASES = {
    "default": {
        "ENGINE": "sql_server.pyodbc",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 17 for SQL Server",
        },
    },
}

# After
DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 18 for SQL Server",
        },
    },
}

Note

mssql-django v1.7 の既定値は ODBC Driver 18 です。 driver オプションでドライバー 17 を明示的に指定することで、引き続きドライバー 17 を使用できます。

手順 3: INSTALLED_APPSを更新する

INSTALLED_APPSsql_serverを参照している場合は、更新します。

# Before
INSTALLED_APPS = [
    "sql_server",
    # ...
]

# After - only needed if using inspectdb
INSTALLED_APPS = [
    "mssql",
    # ...
]

手順 4: 構成を確認する

クイック検証を実行して、新しいバックエンドが正常に接続されていることを確認します。

python manage.py check
python manage.py showmigrations

手順 5: テスト スイートを実行する

プロジェクトのテスト スイートを実行して、すべてが新しいバックエンドで動作することを確認します。

python manage.py test

注意が必要な破壊的変更

Area 変更
既定の ODBC ドライバー v1.7 は既定で ODBC Driver 18 for SQL Server に設定され、既定で Encrypt=yes が設定されます (ドライバー 17 の既定値は Encrypt=no)。 TrustServerCertificate=yesextra_paramsを追加しない限り、自己署名証明書または信頼されていない証明書を持つサーバーへの接続は失敗します。 または、ドライバー 17 を指定するか、サーバーに信頼された証明書をインストールします。
return_rows_bulk_insert 既定値は False です。 True後に ID を返せるようにするには、bulk_createに設定します。 トリガーを持つテーブルの False を維持する必要があります。 mssql-django を使用した一括操作を参照してください。