Migreren van django-mssql-backend naar mssql-django

In dit artikel wordt uitgelegd hoe u een Django-project migreert van het django-mssql-backend pakket (dat de sql_server.pyodbc engine heeft gebruikt) naar het mssql-django pakket.

Overview

Het mssql-django pakket is de opvolger van django-mssql-backend. Het biedt een Django-database-backend voor SQL Server met een bijgewerkte pakketnaam, engine-identificatie en ondersteuning voor nieuwere Django-versies. Het pad van het pyodbc-stuurprogramma blijft de standaard in mssql-django 2.0 en elke database-alias kan kiezen voor het mssql-python-stuurprogramma. Voor meer informatie, zie Selecteer de databasedriver voor mssql-django.

Eigenschap django-mssql-backend mssql-django
Naam van het pakket django-mssql-backend mssql-django
ENGINE sql_server.pyodbc mssql
Django-ondersteuning 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Onderhouden door Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Stap 1: het Python-pakket bijwerken

Verwijder het oude pakket en installeer het nieuwe pakket:

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

Als u een requirements.txt bestand gebruikt, vervangt u de pakketreferentie:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

Stap 2: Werk de DATABASE ENGINE bij

Wijzig in uw settings.py de waarde van ENGINE van sql_server.pyodbc in 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

Het standaard pyodbc-pad gebruikt Microsoft ODBC Driver 18 voor SQL Server. Je kunt Driver 17 blijven gebruiken op het pyodbc-pad door het expliciet in de driver optie te specificeren. Het mssql-python-pad negeert de driver optie.

Stap 3: INSTALLED_APPS bijwerken

Als uw INSTALLED_APPS verwijst naar sql_server, werkt u deze bij:

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

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

Stap 4: Configuratie controleren

Voer een snelle verificatie uit om ervoor te zorgen dat de nieuwe back-end verbinding maakt:

python manage.py check
python manage.py showmigrations

Stap 5: Uw testpakket uitvoeren

Voer het testpakket van uw project uit om te controleren of alles werkt met de nieuwe back-end:

python manage.py test

Belangrijke wijzigingen om op te letten

Area Change
Standaard database-driver mssql-django 2.0 houdt pyodbc als standaard databasedriver. Om het mssql-python-pad te gebruiken, stel je "python_driver": "mssql_python" in in de OPTIONS-dictionary van de alias.
Standaard ODBC-driver op het pyodbc-pad Het pyodbc-pad gebruikt ODBC Driver 18 for SQL Server, waarmee standaard Encrypt=yes wordt ingesteld. Verbindingen met servers met zelfondertekende of niet-vertrouwde certificaten mislukken tenzij u toevoegt TrustServerCertificate=yes aan extra_params. Alternatief kun je Driver 17 specificeren op het pyodbc-pad of een vertrouwd certificaat op de server installeren.
return_rows_bulk_insert Wordt standaard ingesteld op False. Instellen op True om het teruggeven van ID's na bulk_create in te schakelen. Moet False blijven voor tabellen met triggers. Zie Bulkbewerkingen met mssql-django.