Migrace z django-mssql-backend na mssql-django

Tento článek vysvětluje, jak migrovat projekt Django z django-mssql-backend balíčku (který používal sql_server.pyodbc modul) do mssql-django balíčku.

Overview

Balíček mssql-django je následník django-mssql-backend. Poskytuje databázový backend Django pro SQL Server s aktualizovaným názvem balíčku, identifikátorem enginu a podporou novějších verzí Django. Ovladač pyodbc zůstává ve verzi mssql-django 2.0 výchozí a pro každý alias databáze je možné zvolit ovladač mssql-python. Pro více informací viz Vybrat ovladač databáze pro mssql-django.

Vlastnost django-mssql-backend mssql-django
Název balíčku django-mssql-backend mssql-django
MOTOR sql_server.pyodbc mssql
Podpora django 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Udržováno Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Krok 1: Aktualizace balíčku Python

Odinstalujte starý balíček a nainstalujte nový balíček:

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

Pokud používáte requirements.txt soubor, nahraďte odkaz na balíček:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

Krok 2: Aktualizace DATABASE MODULU

Ve settings.py změňte hodnotu ENGINE z sql_server.pyodbc na 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

Výchozí cesta pyodbc používá Microsoft ODBC Driver 18 pro SQL Server. Driver 17 můžete při použití pyodbc nadále používat tak, že jej explicitně zadáte v možnosti driver. Cesta mssql-python tuto driver možnost ignoruje.

Krok 3: Aktualizace INSTALLED_APPS

Pokud váš INSTALLED_APPS odkazuje na sql_server, aktualizujte jej:

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

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

Krok 4: Ověření konfigurace

Spusťte rychlé ověření, abyste zajistili úspěšné připojení nového back-endu:

python manage.py check
python manage.py showmigrations

Krok 5: Spuštění testovací sady

Spusťte testovací sadu projektu a ověřte, že všechno funguje s novým back-endem:

python manage.py test

Zásadní změny, které se mají sledovat

Oblast Změna
Výchozí ovladač databáze mssql-django 2.0 ponechává pyodbc jako výchozí ovladač databáze. Chcete-li použít mssql-python, nastavte "python_driver": "mssql_python" ve slovníku OPTIONS aliasu.
Výchozí ovladač ODBC pro pyodbc Pro cestu pyodbc se používá ODBC Driver 18 for SQL Server, který ve výchozím nastavení nastavuje Encrypt=yes. Připojení k serverům se certifikáty s vlastním podpisem nebo nedůvěryhodnými certifikáty selže, pokud nepřidáte TrustServerCertificate=yes do extra_params. Alternativně zadejte ovladač 17 na cestě pyodbc nebo nainstalujte důvěryhodný certifikát na server.
return_rows_bulk_insert Výchozí hodnota je False. Nastavte na True, aby se po bulk_create vracela ID. Musí zůstat False u tabulek s triggery. Vizte Hromadné operace s mssql-django.