Migrowanie z bazy danych django-mssql-backend do bazy danych mssql-django

W tym artykule wyjaśniono, jak przeprowadzić migrację projektu Django z pakietu django-mssql-backend (który używał silnika sql_server.pyodbc) do pakietu mssql-django.

Overview

Pakiet mssql-django jest następcą programu django-mssql-backend. Zapewnia backend bazy danych Django dla SQL Server z aktualizowaną nazwą pakietu, identyfikatorem silnika oraz wsparciem dla nowszych wersji Django. Ścieżka sterownika pyodbc pozostaje domyślna w mssql-django wersji 2.0, a każdy alias bazy danych może wybrać sterownik mssql-python. Więcej informacji można znaleźć w artykule Wybierz sterownik bazy danych dla mssql-django.

Feature django-mssql-backend mssql-django
Nazwa pakietu django-mssql-backend mssql-django
SILNIKA sql_server.pyodbc mssql
Obsługa platformy Django 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Obsługiwane przez Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Krok 1. Aktualizowanie pakietu Python

Odinstaluj stary pakiet i zainstaluj nowy:

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

Jeśli używasz pliku requirements.txt, zastąp odwołanie do pakietu:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

Krok 2. Aktualizowanie DATABASE aparatu

W settings.py zmień wartość 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

Domyślna ścieżka pyodbc wykorzystuje sterownik Microsoft ODBC 18 dla SQL Server. Możesz nadal używać sterownika 17 na ścieżce pyodbc, określając go wyraźnie w opcji driver . Ścieżka mssql-python ignoruje driver tę opcję.

Krok 3. Aktualizowanie INSTALLED_APPS

Jeśli element INSTALLED_APPS odwołuje się do sql_server, zaktualizuj go:

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

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

Krok 4. Weryfikowanie konfiguracji

Uruchom szybką weryfikację, aby upewnić się, że nowe zaplecze łączy się pomyślnie:

python manage.py check
python manage.py showmigrations

Krok 5. Uruchamianie zestawu testów

Uruchom zestaw testów projektu, aby sprawdzić, czy wszystko działa z nowym zapleczem:

python manage.py test

Zmiany powodujące niezgodność, które mają być obserwowane

Area Change
Domyślny sterownik bazy danych mssql-django 2.0 zachowuje pyodbc jako domyślny sterownik bazy danych. Aby użyć ścieżki mssql-python, ustaw "python_driver": "mssql_python" w słowniku OPTIONS aliasu.
Domyślny sterownik ODBC na ścieżce pyodbc Ścieżka pyodbc używa ODBC Driver 18 for SQL Server, co domyślnie ustawia Encrypt=yes się. Połączenia z serwerami z certyfikatami samopodpisanymi lub niezaufanymi kończą się niepowodzeniem, chyba że dodasz TrustServerCertificate=yes do extra_params. Alternatywnie, określ sterownik 17 na ścieżce pyodbc lub zainstaluj zaufany certyfikat na serwerze.
return_rows_bulk_insert Wartość domyślna to False. Ustaw wartość True, aby włączyć zwracanie identyfikatorów po bulk_create. Musi pozostać False w przypadku tabel z wyzwalaczami. Zobacz Operacje zbiorcze za pomocą narzędzia mssql-django.