Eseguire la migrazione da django-mssql-backend a mssql-django

Questo articolo illustra come eseguire la migrazione di un progetto Django dal django-mssql-backend pacchetto (che ha usato il sql_server.pyodbc motore) al mssql-django pacchetto.

Overview

Il mssql-django pacchetto è il successore di django-mssql-backend. Fornisce un backend database Django per SQL Server con un nome di pacchetto aggiornato, un identificatore motore e supporto per le versioni più recenti di Django. Il percorso driver pyodbc rimane predefinito nella mssql-django versione 2.0, e ogni alias del database può optare per accedere al driver mssql-python. Per ulteriori informazioni, vedi Seleziona il driver del database per mssql-django.

Caratteristica / Funzionalità django-mssql-backend mssql-django
Nome del pacchetto django-mssql-backend mssql-django
MOTORE sql_server.pyodbc mssql
Supporto di Django 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Gestito da Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Passaggio 1: Aggiornare il pacchetto di Python

Disinstallare il pacchetto precedente e installarlo nuovo:

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

Se si usa un requirements.txt file, sostituire il riferimento al pacchetto:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

Passaggio 2: Aggiornare il DATABASE motore

Nel tuo settings.py, modifica il valore di ENGINE da sql_server.pyodbc a 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

Il percorso pyodbc predefinito utilizza il driver ODBC 18 di Microsoft per SQL Server. Puoi continuare a usare il Driver 17 sul percorso pyodbc specificandolo esplicitamente nell'opzione driver . Il percorso mssql-python ignora l'opzione driver .

Passaggio 3: Aggiornare INSTALLED_APPS

Se il tuo INSTALLED_APPS fa riferimento a sql_server, aggiornalo:

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

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

Passaggio 4: Verificare la configurazione

Eseguire una verifica rapida per assicurarsi che il nuovo back-end si connetta correttamente:

python manage.py check
python manage.py showmigrations

Passaggio 5: Esegui la suite di test

Esegui la suite di test del progetto per verificare che tutto funzioni con il nuovo backend:

python manage.py test

Modifiche di rilievo da controllare

Area Change
Driver di database predefinito mssql-django La versione 2.0 mantiene pyodbc come driver predefinito del database. Per usare il percorso mssql-python, imposta "python_driver": "mssql_python" nel dizionario OPTIONS dell'alias.
Driver ODBC predefinito nel percorso di pyodbc Il percorso pyodbc usa ODBC Driver 18 for SQL Server, che imposta Encrypt=yes di default. Le connessioni ai server con certificati autofirmati o non attendibili hanno esito negativo a meno che non si aggiunga TrustServerCertificate=yes a extra_params. In alternativa, specifica il Driver 17 sul percorso pyodbc o installa un certificato affidabile sul server.
return_rows_bulk_insert Di default è False. Impostare su True per abilitare la restituzione degli ID dopo bulk_create. Deve rimanere False per le tabelle con trigger. Consulta le operazioni in blocco con mssql-django.