Новые возможности mssql-django

В этой статье описываются новые функции, улучшения и изменения в каждой версии серверной mssql-django части базы данных Django.

Версия 1.7.3

Дата выпуска: июнь 2026 г.

Версия 1.7.3 — это выпуск исправлений с обратной совместимостью с двумя исправлениями подключения и среды выполнения.

Исправленные ошибки

  • FA001 для режимов, отличных от ActiveDirectoryMsi: Ранее серверная часть пропускала Trusted_Connection=yes только для ActiveDirectoryMsi. Другие режимы Entra, которые не предоставляют значение USER (например, ActiveDirectoryIntegrated, ActiveDirectoryDefault, ActiveDirectoryDeviceFlow), всё равно получали Trusted_Connection=yes, которое драйвер ODBC отклонял с ошибкой FA001 (Cannot use Authentication option with Integrated Security option). Исправление обнаруживает любое явно заданное значение Authentication= с учетом границ и без учета регистра, а также пропускает и Trusted_Connection, и Integrated Security=SSPI. Обработка паролей не изменилась: SqlPassword, ActiveDirectoryPassword и ActiveDirectoryServicePrincipal по-прежнему отправляют PWD, в то время как ActiveDirectoryInteractive по-прежнему его не передаёт.
  • KeyError для подклассов DatabaseWrapper: кэшируемые свойства sql_server_version и to_azure_sql_db зависели от интроспекции type(self).__dict__ объекта cached_property, из-за чего при первом обращении подкласса DatabaseWrapper к ним возникало KeyError (регрессия, внесённая в версии 1.7.1). Исправление использует явные словари класса (_known_versions, _known_azures), доступ к которым осуществляется через self., поэтому поиск разрешается по MRO, и обёртки подклассов работают корректно.

Версия 1.7.2

Дата выпуска: май 2026 г.

Версия 1.7.2 — это патч-релиз, сохраняющий обратную совместимость и содержащий исправления, связанные с часовыми поясами и совместимостью.

Исправленные ошибки

  • .explain() Совместимость с Django 4.0 и более поздними версиями: исправлена обработка компилятором метаданных explain в Django, поэтому .explain() больше не приводит к сбою с AttributeError в Django 4.0 и более поздних версиях. Серверная часть теперь использует соответствующие версии поля explain и при необходимости корректно генерирует NotSupportedError.
  • Обработка часового пояса datetimeoffset: исправлен разбор datetimeoffset, поэтому смещения часового пояса сохраняются, а не отбрасываются. Возвращаемые значения даты и времени теперь содержат информацию о часовом поясе там, где это ожидается.
  • Now() with USE_TZ=True: обновлена генерация SQL для Now(): теперь при включенной поддержке часовых поясов используется поведение с учётом часового пояса, что предотвращает смещение меток времени на хостах SQL Server, не использующих UTC.

Версия 1.7.1

Дата выпуска: апрель 2026 г.

Версия 1.7.1 — это обратно совместимый патч-релиз с исправлениями ошибок.

Исправленные ошибки

  • FieldDoesNotExist при изменении полей при убывающем порядке индексов: Исправлено _alter_field() в schema.py: теперь используется index.fields_orders вместо index.fields при определении имён полей индекса. Предыдущий код передавал необработанные строки полей с сортировкой (например, "-pub_date") в model._meta.get_field(), что вызывало FieldDoesNotExist. Теперь извлекается только имя поля, а суффикс сортировки корректно отбрасывается.
  • Поддержка базы данных SQL в Microsoft Fabric (EngineEdition 12): база данных SQL в Fabric распознается как редакция Azure (EngineEdition=12). Ранее редакция движка Fabric не распознавалась, из-за чего to_azure_sql_db возвращал False, а проверки флагов функций завершались сбоем. Исправление добавляет EDITION_AZURE_SQL_FABRIC=12 в _AZURE_EDITIONS и сопоставляет Fabric с последней поддерживаемой версией SQL Server. JSONField, хэш-функции, анализ параметров сортировки и очистка тестовой базы данных теперь работают правильно в Fabric.

Версия 1.7

Дата выпуска: март 2026 г.

Обзор матча

  • Поддержка Django 6.0: полная совместимость с Django 6.0, которая требует Python 3.12 или более поздней версии. Все изменения API 6.0 обрабатываются прозрачно серверной частью.
  • Частичная CompositePrimaryKey поддержка: Серверная часть добавляет частичную поддержку Django 5.2 CompositePrimaryKey. Для сравнения кортежей с подзапросами требуется Django версии 5.2.4 или новее, при этом некоторые крайние случаи со составными ключами и JSONField остаются. Django 5.2 впервые поддерживается в mssql-django 1.6.
  • поддержка SQL Server 2025: проверена на SQL Server 2025.
  • Драйвер ODBC 18 по умолчанию: серверная часть по умолчанию использует драйвер ODBC 18 для SQL Server, при этом автоматический возврат к ODBC Driver 17, если версия 18 не установлена.

Заметки для конкретной версии

Версия Django Примечания
Django 5.1 inspectdb может проверять таблицы с составными первичными ключами, но для них не создаются полные определения моделей.
Django 5.2 CompositePrimaryKey поддержка является частичной. Для сравнения кортежей с вложенными запросами требуется Django 5.2.4 или более поздней версии, а некоторые варианты миграции и JSONField пограничные варианты остаются.
Django 6.0 Требуется Python 3.12 или более поздней версии. Применяются все ограничения 5.2.

Версия 1.6

Дата выпуска: август 2025 г.

  • Добавлена поддержка Django 5.1 и 5.2.
  • Расширенная функциональность JSON и обратная совместимость.
  • Улучшенная инфраструктура конвейера.

Версия 1.5

Дата выпуска: апрель 2024 г.

  • Добавлен supports_comments флаг функции для db_comments.
  • Исправлены ошибки, связанные с AutoField, форматированием параметров и запросами к схеме.

Версия 1.4

Дата выпуска: январь 2024 г.

  • Добавлена поддержка Django 5.0.
  • Добавлена поддержка db_comment.
  • Исправления ошибок в преобразованиях даты/времени и пустых агрегатах.

Версия 1.3

Дата выпуска: май 2023 г.

  • Добавлена поддержка Django 4.2.
  • Добавлена поддержка Replace чувствительных к регистру функций.
  • Исправления ошибок для OFFSET обработки и левого заполнения.

Версия 1.2

Дата выпуска: декабрь 2022 г.

  • Добавлена поддержка Django 4.1.
  • Добавлена поддержка часовых поясов (datetimeoffset с USE_TZ=True).
  • Добавлен параметр return_rows_bulk_insert для получения идентификаторов при массовой вставке.
  • Добавлена поддержка SQL Server 2022.
  • Добавлена JSONField поддержка Управляемый экземпляр SQL Azure.

Версия 1.1

Дата выпуска: июль 2022 г.

  • Поддержка Django 3.2 и 4.0.
  • Поддерживаются SQL Server 2016 и более поздние версии, а также База данных SQL Azure.
  • Подключение на основе pyodbc.