從 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。

Feature Django-MSSQL-後端 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 驅動程式 18。 你可以在選項中明確指定 driver ,繼續使用 Driver 17。

步驟三:更新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

步驟五:執行你的測試套件

執行你專案的測試套件,確認所有功能是否能與新後端相容:

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 以啟用在 bulk_create 之後傳回 ID。 對於含有觸發程序的資料表,必須維持為 False。 請參考 mssql-django 的 Bulk 操作