Migrer de django-mssql-backend vers mssql-django

Cet article explique comment migrer un projet Django du django-mssql-backend package (qui a utilisé le sql_server.pyodbc moteur) vers le mssql-django package.

Overview

Le mssql-django package est le successeur de django-mssql-backend. Il fournit un backend de base de données Django pour SQL Server avec un nom de paquet mis à jour, un identifiant moteur et un support pour les versions plus récentes de Django. Le chemin du pilote pyodbc reste le choix par défaut dans mssql-django la version 2.0, et chaque alias de base de données peut opter pour le pilote mssql-python. Pour plus d’informations, voir Sélectionner le pilote de base de données pour mssql-django.

Fonctionnalité django-mssql-backend mssql-django
Nom du package django-mssql-backend mssql-django
MOTEUR sql_server.pyodbc mssql
Prise en charge de Django 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Géré par Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Étape 1 : Mettre à jour le package Python

Désinstallez l’ancien package et installez le nouveau :

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

Si vous utilisez un requirements.txt fichier, remplacez la référence du package :

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

Étape 2 : Mettre à jour le DATABASE MOTEUR

Dans votre settings.py, remplacez la valeur ENGINE de sql_server.pyodbc par 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

Le chemin pyodbc par défaut utilise le pilote ODBC 18 de Microsoft pour SQL Server. Vous pouvez continuer à utiliser Driver 17 sur le chemin pyodbc en l’indiquant explicitement dans l’option driver. Le chemin mssql-python ignore cette driver option.

Étape 3 : Mettre à jour INSTALLED_APPS

Si votre INSTALLED_APPS fait référence à sql_server, mettez-le à jour :

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

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

Étape 4 : Vérifier la configuration

Exécutez une vérification rapide pour vous assurer que le nouveau serveur principal se connecte correctement :

python manage.py check
python manage.py showmigrations

Étape 5 : Exécuter votre suite de tests

Exécutez la suite de tests de votre projet pour vérifier que tout fonctionne avec le nouveau back-end :

python manage.py test

Changements cassants à surveiller

Area Change
Pilote de base de données par défaut mssql-django La version 2.0 conserve pyodbc comme pilote de base de données par défaut. Pour utiliser le chemin mssql-python, définissez "python_driver": "mssql_python" dans le dictionnaire de l’alias OPTIONS .
Pilote ODBC par défaut sur le chemin pyodbc Le chemin pyodbc utilise ODBC Driver 18 for SQL Server, qui définit Encrypt=yes par défaut. Les connexions aux serveurs avec des certificats auto-signés ou non approuvés échouent, sauf si vous ajoutez TrustServerCertificate=yes à extra_params. Sinon, spécifiez le pilote 17 sur le chemin pyodbc ou installez un certificat de confiance sur le serveur.
return_rows_bulk_insert La valeur par défaut est False. Définissez sur True pour activer le renvoi des ID après bulk_create. Doit rester False pour les tables avec des déclencheurs. Consultez les opérations en bloc avec mssql-django.