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

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

Overview

mssql-django パッケージは、django-mssql-backendの後継です。 SQL Server向けのDjangoデータベースバックエンドを提供し、パッケージ名、エンジン識別子、新しいDjangoバージョンのサポートを備えています。 pyodbcドライバパスは mssql-django 2.0でもデフォルトであり、各データベースエイリアスはmssql-pythonドライバにオプトインできます。 詳細については、 mssql-djangoのデータベースドライバーを選択することをご覧ください。

特徴 django-mssql-backend mssql-django
パッケージ名 django-mssql-backend mssql-django
エンジン sql_server.pyodbc mssql
Django のサポート 2.2, 3.0, 3.1 5.2, 6.0, 6.1
管理者 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>=2.0

手順 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

デフォルトのpyodbcパスはMicrosoft ODBCドライバー18 for SQL Serverを使用しています。 ドライバー17は driver オプションで明示的に指定することで、pyodbcパスで引き続き使用できます。 mssql-pythonパスは driver オプションを無視します。

手順 3: INSTALLED_APPSを更新する

INSTALLED_APPSがsql_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 変更
デフォルトのデータベースドライバー mssql-django 2.0ではpyodbcがデフォルトのデータベースドライバーとして維持されています。 mssql-pythonパスを使うには、エイリアスのOPTIONS辞書で"python_driver": "mssql_python"を設定します。
pyodbcパス上のデフォルトのODBCドライバー pyodbcパスは ODBC Driver 18 for SQL Serverを使い、デフォルトで Encrypt=yes を設定しています。 TrustServerCertificate=yesにextra_paramsを追加しない限り、自己署名証明書または信頼されていない証明書を持つサーバーへの接続は失敗します。 あるいは、pyodbcパスにドライバー17を指定するか、サーバーに信頼された証明書をインストールする方法もあります。
return_rows_bulk_insert 既定値は False です。 True後に ID を返せるようにするには、bulk_createに設定します。 トリガーを持つテーブルの False を維持する必要があります。 mssql-django を使用した一括操作を参照してください。