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