Migrace z django-mssql-backend na mssql-django

Tento článek vysvětluje, jak migrovat projekt Django z django-mssql-backend balíčku (který používal sql_server.pyodbc modul) do mssql-django balíčku.

Overview

Balíček mssql-django je následník django-mssql-backend. Nadále poskytuje back-end databáze Django pro SQL Server pomocí pyodbc, ale s aktualizovaným názvem balíčku, identifikátorem stroje a podporou novějších verzí Django.

Vlastnost django-mssql-backend mssql-django
Název balíčku django-mssql-backend mssql-django
MOTOR sql_server.pyodbc mssql
Podpora django 2.2, 3.0, 3.1 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0
Udržováno Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Krok 1: Aktualizace balíčku Python

Odinstalujte starý balíček a nainstalujte nový balíček:

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

Pokud používáte requirements.txt soubor, nahraďte odkaz na balíček:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=1.7

Krok 2: Aktualizace DATABASE MODULU

Ve settings.py změňte hodnotu ENGINE z sql_server.pyodbc na 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 Verze 1.7 standardně používá ODBC Driver 18. Driver 17 můžete i nadále používat, když ho v možnosti driver explicitně uvedete.

Krok 3: Aktualizace INSTALLED_APPS

Pokud váš INSTALLED_APPS odkazuje na sql_server, aktualizujte jej:

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

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

Krok 4: Ověření konfigurace

Spusťte rychlé ověření, abyste zajistili úspěšné připojení nového back-endu:

python manage.py check
python manage.py showmigrations

Krok 5: Spuštění testovací sady

Spusťte testovací sadu projektu a ověřte, že všechno funguje s novým back-endem:

python manage.py test

Zásadní změny, které se mají sledovat

Oblast Změna
Výchozí ovladač ODBC v1.7 má jako výchozí ODBC Driver 18 for SQL Server, což ve výchozím nastavení nastaví Encrypt=yes (ovladač 17 měl jako výchozí Encrypt=no). Připojení k serverům se certifikáty s vlastním podpisem nebo nedůvěryhodnými certifikáty selže, pokud nepřidáte TrustServerCertificate=yes do extra_params. Případně můžete zadat ovladač 17 nebo nainstalovat důvěryhodný certifikát na server.
return_rows_bulk_insert Výchozí hodnota je False. Nastavte na True, aby se po bulk_create vracela ID. Musí zůstat False u tabulek s triggery. Vizte Hromadné operace s mssql-django.