Migrar do django-mssql-backend para mssql-django

Este artigo explica como migrar um projeto do Django do django-mssql-backend pacote (que usou o sql_server.pyodbc mecanismo) para o mssql-django pacote.

Overview

O mssql-django pacote é o sucessor de django-mssql-backend. Ele fornece um backend de banco de dados Django para SQL Server com nome de pacote atualizado, identificador de motor e suporte para versões mais recentes do Django. O caminho do driver pyodbc permanece o padrão na mssql-django versão 2.0, e cada alias de banco de dados pode optar pelo driver mssql-python. Para mais informações, veja Selecionar o driver de banco de dados para mssql-django.

Característica django-mssql-backend mssql-django
Nome do pacote django-mssql-backend mssql-django
MOTOR sql_server.pyodbc mssql
Suporte do Django 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Mantido por Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Etapa 1: Atualizar o pacote de Python

Desinstale o pacote antigo e instale o novo:

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

Se você usar um requirements.txt arquivo, substitua a referência do pacote:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

Etapa 2: Atualizar o DATABASE MOTOR

Na sua settings.py, altere o valor de ENGINE de sql_server.pyodbc para 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

O caminho padrão do pyodbc usa o driver ODBC 18 da Microsoft para SQL Server. Você pode continuar a usar o Driver 17 no caminho pyodbc, especificando-o de forma explícita na opção driver. O caminho mssql-python ignora essa driver opção.

Etapa 3: Atualizar INSTALLED_APPS

Se o seu INSTALLED_APPS faz referência a sql_server, atualize-o:

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

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

Etapa 4: Verificar a configuração

Execute uma verificação rápida para garantir que o novo back-end se conecte com êxito:

python manage.py check
python manage.py showmigrations

Etapa 5: Executar seu conjunto de testes

Execute o conjunto de testes do projeto para verificar se tudo funciona com o novo back-end:

python manage.py test

Alterações disruptivas para se olhar com atenção

Area Change
Driver padrão de banco de dados mssql-django A versão 2.0 mantém o pyodbc como driver padrão do banco de dados. Para usar o caminho mssql-python, defina "python_driver": "mssql_python" no dicionário OPTIONS do alias.
Driver ODBC padrão no caminho do pyodbc O caminho pyodbc usa ODBC Driver 18 for SQL Server, que define Encrypt=yes por padrão. As conexões com servidores com certificados autoassinados ou não confiáveis falham, a menos que você adicione TrustServerCertificate=yes a extra_params. Alternativamente, especifique o Driver 17 no caminho pyodbc ou instale um certificado confiável no servidor.
return_rows_bulk_insert Usa False como padrão. Defina como True para habilitar o retorno de IDs após bulk_create. Deve permanecer False para tabelas com gatilhos. Consulte operações em massa com mssql-django.