本文說明如何將 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 操作。 |