Migrera från django-mssql-backend till mssql-django

Den här artikeln beskriver hur du migrerar ett Django-projekt från django-mssql-backend paketet (som använde sql_server.pyodbc motorn) till mssql-django paketet.

Overview

Paketet mssql-django är efterföljare till django-mssql-backend. Den tillhandahåller en Django-databasbackend för SQL Server med ett uppdaterat paketnamn, motoridentifierare och stöd för nyare Django-versioner. Pyodbc-drivrutinsvägen är fortfarande standard i mssql-django 2.0, och varje databasalias kan välja att använda mssql-python-drivrutinen. För mer information, se Välj databasdrivrutinen för mssql-django.

Feature django-mssql-backend mssql-django
Paketnamn django-mssql-backend mssql-django
MOTOR sql_server.pyodbc mssql
Stöd för Django 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Underhålls av Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Steg 1: Uppdatera Python-paketet

Avinstallera det gamla paketet och installera det nya:

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

Om du använder en requirements.txt fil ersätter du paketreferensen:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

Steg 2: Uppdatera DATABASE MOTORN

I din settings.pyändrar du ENGINE värdet från sql_server.pyodbc till 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

Standard-pyodbc-vägen använder Microsoft ODBC Driver 18 för SQL Server. Du kan fortsätta använda Drivrutin 17 på pyodbc-vägen genom att specificera det explicit i alternativet driver . mssql-python-sökvägen ignorerar alternativet driver.

Steg 3: Uppdatera INSTALLED_APPS

Om din INSTALLED_APPS refererar till sql_server, uppdatera den:

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

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

Steg 4: Verifiera konfigurationen

Kör en snabb verifiering för att säkerställa att den nya serverdelen ansluter:

python manage.py check
python manage.py showmigrations

Steg 5: Kör testpaketet

Kör projektets testsvit för att kontrollera att allt fungerar med den nya serverdelen:

python manage.py test

Icke-bakåtkompatibla ändringar att se upp med

Area Change
Standarddrivrutin för databaser mssql-django 2.0 behåller pyodbc som standarddrivrutin för databasen. För att använda mssql-python-vägen, ställ "python_driver": "mssql_python" in i aliasens OPTIONS ordbok.
Standarddrivrutin för ODBC på pyodbc-vägen Pyodbc-banan använder ODBC Driver 18 for SQL Server, vilket sätter Encrypt=yes som standard. Anslutningar till servrar med självsignerade eller ej betrodda certifikat misslyckas om du inte lägger till TrustServerCertificate=yes i extra_params. Alternativt anger du drivrutin 17 i sökvägen till pyodbc eller installerar ett betrott certifikat på servern.
return_rows_bulk_insert Standardinställningen är False. Ställ in på True för att aktivera att ID:n returneras efter bulk_create. Måste finnas kvar False för tabeller med utlösare. Se Massoperationer med mssql-django.