Миграция из django-mssql-backend в mssql-django

В этой статье объясняется, как перенести проект Django из django-mssql-backend пакета (который использовал sql_server.pyodbc подсистему) в mssql-django пакет.

Overview

Пакет mssql-django является преемником django-mssql-backend. Она продолжает предоставлять серверную часть базы данных Django для SQL Server с помощью pyodbc, но с обновленным именем пакета, идентификатором ядра и поддержкой новых версий Django.

Feature django-mssql-backend mssql-django
Имя пакета django-mssql-backend mssql-django
ДВИГАТЕЛЬ sql_server.pyodbc mssql
Поддержка Django 2.2, 3.0, 3.1 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0
Поддерживается: Microsoft Microsoft
PyPI pip install django-mssql-backend pip install mssql-django

Шаг 1. Обновление пакета Python

Удалите старый пакет и установите новый:

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

При использовании requirements.txt файла замените ссылку на пакет:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=1.7

Шаг 2. Обновление DATABASE ЯДРА

В settings.py измените значение ENGINE с sql_server.pyodbc на 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 Версия 1.7 по умолчанию использует драйвер ODBC 18. Вы можете продолжать использовать драйвер 17, указав его явным образом в параметре driver .

Шаг 3. Обновление INSTALLED_APPS

Если ваш INSTALLED_APPS ссылается на sql_server, обновите его:

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

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

Шаг 4. Проверка конфигурации

Выполните быструю проверку, чтобы убедиться, что новый серверный сервер успешно подключается:

python manage.py check
python manage.py showmigrations

Шаг 5. Запуск набора тестов

Запустите набор тестов проекта, чтобы убедиться, что все работает с новой серверной частью:

python manage.py test

Изменения, нарушающие совместимость, на которые стоит обратить внимание

Area Change
Драйвер ODBC по умолчанию В версии 1.7 значением по умолчанию является ODBC Driver 18 for SQL Server, который по умолчанию задаёт Encrypt=yes (в драйвере 17 значением по умолчанию было Encrypt=no). Подключения к серверам с самоподписанными или недоверенными сертификатами не удаются, если не добавить TrustServerCertificate=yes в extra_params. Кроме того, укажите драйвер 17 или установите доверенный сертификат на сервере.
return_rows_bulk_insert По умолчанию — False. Установите значение True, чтобы включить возврат идентификаторов после bulk_create. Должно оставаться False для таблиц с триггерами. См. пакетные операции с mssql-django.