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 continua fornecendo um backend de banco de dados para Django no SQL Server usando pyodbc, mas com um nome de pacote atualizado, um identificador de mecanismo atualizado e suporte a versões mais recentes do 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 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0
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>=1.7

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

mssql-django A v1.7 usa como padrão o Driver ODBC 18. Você pode continuar a usar o Driver 17 especificando-o explicitamente na opção driver .

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

Mudanças que causam quebra às quais ficar atento

Area Change
Driver ODBC padrão A v1.7 tem como padrão ODBC Driver 18 for SQL Server, que define Encrypt=yes por padrão (o Driver 17 tinha Encrypt=no como 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. Como alternativa, especifique o Driver 17 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.