Migre de django-mssql-backend a mssql-django

En este artículo se explica cómo migrar un proyecto de Django desde el django-mssql-backend paquete (que usó el sql_server.pyodbc motor) al mssql-django paquete.

Overview

El mssql-django paquete es el sucesor de django-mssql-backend. Sigue proporcionando un back-end de base de datos de Django para SQL Server mediante pyodbc, pero con un nombre de paquete actualizado, un identificador de motor y compatibilidad con versiones más recientes de Django.

Feature django-mssql-backend mssql-django
Nombre del paquete django-mssql-backend mssql-django
MOTOR sql_server.pyodbc mssql
Soporte técnico de Django 2.2, 3.0, 3.1 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0
Mantenido por Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Paso 1: Actualizar el paquete de Python

Desinstale el paquete anterior e instale el nuevo:

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

Si usa un requirements.txt archivo, reemplace la referencia del paquete:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=1.7

Paso 2: Actualizar el DATABASE ENGINE

En su settings.py, cambie el valor de ENGINE de sql_server.pyodbc a 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 La versión 1.7 tiene como valor predeterminado ODBC Driver 18. Puede seguir usando el controlador 17 si lo especifica explícitamente en la opción driver.

Paso 3: Actualizar INSTALLED_APPS

Si INSTALLED_APPS hace referencia a sql_server, actualícela:

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

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

Paso 4: Comprobar la configuración

Ejecute una comprobación rápida para asegurarse de que el nuevo back-end se conecta correctamente:

python manage.py check
python manage.py showmigrations

Paso 5: Ejecución del conjunto de pruebas

Ejecute el conjunto de pruebas del proyecto para comprobar que todo funciona con el nuevo back-end:

python manage.py test

Cambios importantes que se van a observar

Area Cambio
Controlador ODBC predeterminado v1.7 usa ODBC Driver 18 for SQL Server de forma predeterminada, lo que establece Encrypt=yes por defecto (el controlador 17 usaba Encrypt=no por defecto). Las conexiones a servidores con certificados autofirmados o que no son de confianza producen un error a menos que agregue TrustServerCertificate=yes a extra_params. Como alternativa, especifique Driver 17 o instale un certificado de confianza en el servidor.
return_rows_bulk_insert Tiene como valor predeterminado False. Establecer en True para habilitar la devolución de ID tras bulk_create. Debe permanecer en False para tablas con disparadores. Consulte Operaciones masivas con mssql-django.