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 bietet ein Django-Datenbank-Backend für SQL Server mit aktualisiertem Paketname, Engine-Kennung und Unterstützung neuerer Django-Versionen. Der Pfad des pyodbc-Treibers bleibt in mssql-django Version 2.0 der Standard, und jeder Datenbankalias kann sich für den mssql-python-Treiber entscheiden. Weitere Informationen finden Sie unter Select the database driver for mssql-django.

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 5.2, 6.0, 6.1
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>=2.0

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

Der Standardpfad von pyodbc verwendet Microsoft ODBC Driver 18 für SQL Server. Du kannst Treiber 17 weiterhin auf dem pyodbc-Pfad verwenden, indem du es explizit in der driver Option angibst. Der mssql-python-Pfad ignoriert die driver Option.

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

Wichtige Änderungen, auf die Sie achten sollten

Area Veränderung
Standard-Datenbanktreiber mssql-django 2.0 behält pyodbc als Standard-Datenbanktreiber. Um den mssql-python-Pfad zu verwenden, legen Sie "python_driver": "mssql_python" im OPTIONS-Wörterbuch des Alias fest.
Standard-ODBC-Treiber im pyodbc-Pfad Der pyodbc-Pfad verwendet ODBC Driver 18 for SQL Server, wodurch Encrypt=yes standardmäßig festgelegt wird. 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 auf dem Pfad Pyodbc 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 bei Tabellen mit Triggern False bleiben. Siehe Stapelverarbeitungen mit mssql-django.