Migration von django-mssql-backend auf mssql-django

In diesem Artikel wird erläutert, wie Sie ein Django-Projekt aus dem django-mssql-backend Paket (das das sql_server.pyodbc Modul verwendet hat) in das mssql-django Paket migrieren.

Übersicht

Das mssql-django Paket ist der Nachfolger von django-mssql-backend. Es stellt weiterhin ein Django-Datenbank-Back-End für SQL Server mithilfe von Pyodbc bereit, aber mit einem aktualisierten Paketnamen, Modulbezeichner und Unterstützung für neuere Django-Versionen.

Merkmal django-mssql-backend mssql-django
Paketname django-mssql-backend mssql-django
MOTOR sql_server.pyodbc mssql
Django-Support 2.2, 3.0, 3.1 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0
Gepflegt von Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Schritt 1: Aktualisieren des Python-Pakets

Deinstallieren Sie das alte Paket, und installieren Sie das neue Paket:

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

Wenn Sie eine requirements.txt Datei verwenden, ersetzen Sie den Paketverweis:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=1.7

Schritt 2: Aktualisieren Sie die DATABASE ENGINE

Ändern Sie in Ihrem settings.py den ENGINE-Wert von sql_server.pyodbc auf 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 v1.7 verwendet standardmäßig den ODBC-Treiber 18. Sie können Driver 17 weiterhin verwenden, indem Sie ihn explizit in der driver Option angeben.

Schritt 3: Aktualisieren INSTALLED_APPS

Wenn Ihre INSTALLED_APPS auf sql_server verweist, aktualisieren Sie sie:

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

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

Schritt 4: Überprüfen der Konfiguration

Führen Sie eine schnelle Überprüfung aus, um sicherzustellen, dass das neue Back-End erfolgreich eine Verbindung herstellt:

python manage.py check
python manage.py showmigrations

Schritt 5: Führen Sie Ihre Test-Suite aus

Führen Sie die Testsuite Ihres Projekts aus, um zu überprüfen, ob alles mit dem neuen Back-End funktioniert:

python manage.py test

Inkompatible Änderungen, auf die Sie achten sollten

Area Veränderung
Standard-ODBC-Treiber v1.7 ist standardmäßig auf ODBC Driver 18 for SQL Server festgelegt, wodurch Encrypt=yes standardmäßig festgelegt wird (Treiber 17 war standardmäßig auf Encrypt=no festgelegt). Verbindungen zu Servern mit selbstsignierten oder nicht vertrauenswürdigen Zertifikaten schlagen fehl, es sei denn, Sie fügen TrustServerCertificate=yes zu extra_params hinzu. Alternativ können Sie Treiber 17 angeben oder ein vertrauenswürdiges Zertifikat auf dem Server installieren.
return_rows_bulk_insert Wird standardmäßig auf False festgelegt. Legen Sie den Wert auf True fest, um die Rückgabe von IDs nach bulk_create zu aktivieren. Muss False für Tabellen mit Triggern beibehalten werden. Siehe Stapelverarbeitungen mit mssql-django.