Neuerungen in mssql-django

In diesem Artikel werden neue Features, Verbesserungen und Änderungen in jeder Version des mssql-django Django-Datenbank-Back-End beschrieben.

Version 1.7.3

Veröffentlichungsdatum: Juni 2026

Version 1.7.3 ist eine abwärtskompatible Patchversion mit zwei Verbindungs- und Laufzeitfixes.

Fehlerkorrekturen

  • FA001 für andere Modi als ActiveDirectoryMsi von Authentication=: Zuvor übersprang das Backend Trusted_Connection=yes nur für ActiveDirectoryMsi. Andere Entra-Modi, die keinen USER-Wert bereitstellen (z. B. ActiveDirectoryIntegrated, ActiveDirectoryDefault, ActiveDirectoryDeviceFlow), erhielten dennoch Trusted_Connection=yes, was der ODBC-Treiber mit FA001 (Cannot use Authentication option with Integrated Security option) ablehnte. Die Korrektur erkennt jeden expliziten Wert Authentication= mittels eines abgrenzungssensitiven Abgleichs ohne Berücksichtigung der Groß-/Kleinschreibung und überspringt sowohl Trusted_Connection als auch Integrated Security=SSPI. Die Kennwortbehandlung bleibt unverändert: SqlPassword, ActiveDirectoryPassword und ActiveDirectoryServicePrincipal senden PWD weiterhin, während ActiveDirectoryInteractive es weiterhin weglässt.
  • KeyError bei Unterklassen von DatabaseWrapper: Die zwischengespeicherten Eigenschaften sql_server_version und to_azure_sql_db basierten auf der type(self).__dict__-Introspektion von cached_property, wodurch beim ersten Zugriff einer DatabaseWrapper-Unterklasse darauf KeyError ausgelöst wurde (eine in 1.7.1 eingeführte Regression). Der Fix verwendet explizite Dictionaries auf Klassenebene (_known_versions, _known_azures), auf die über self. zugegriffen wird, sodass die Auflösung über die MRO erfolgt und Wrapper von Unterklassen korrekt funktionieren.

Version 1.7.2

Veröffentlichungsdatum: Mai 2026

Version 1.7.2 ist eine abwärtskompatible Patchversion mit Zeitzonen- und Kompatibilitätsfixes.

Fehlerkorrekturen

  • .explain() Kompatibilität mit Django 4.0 und neuer: Die Compiler-Verarbeitung von Djangos Explain-Metadaten wurde korrigiert, sodass .explain() unter Django 4.0 und neuer nicht mehr mit AttributeError fehlschlägt. Das Back-End verwendet nun versionsgerechte Explain-Felder und löst bei Bedarf korrekt NotSupportedError aus.
  • datetimeoffset-Zeitzonenbehandlung: datetimeoffset-Parsing korrigiert, sodass Zeitzonen-Offsets beibehalten statt verworfen werden. Zurückgegebene Datums- und Zeitwerte enthalten jetzt Zeitzoneninformationen, wenn dies erwartet wird.
  • Now() mit USE_TZ=True: SQL-Generierung für Now() aktualisiert, damit bei aktivierter Zeitzonenunterstützung zeitzonenbewusstes Verhalten verwendet wird und Zeitstempelabweichungen auf Nicht-UTC-SQL Server-Hosts verhindert werden.

Version 1.7.1

Veröffentlichungsdatum: April 2026

Version 1.7.1 ist eine abwärtskompatible Patchversion mit Fehlerbehebungen.

Fehlerkorrekturen

  • FieldDoesNotExist beim Ändern von Feldern mit absteigender Indexreihenfolge: _alter_field() in schema.py so korrigiert, dass beim Auflösen von Index-Feldnamen index.fields_orders anstelle von index.fields verwendet wird. Der vorherige Code übergab unverarbeitete Zeichenfolgen für Felder mit Sortierung (zum Beispiel "-pub_date") an model._meta.get_field(), was FieldDoesNotExist auslöste. Jetzt wird nur der Feldname extrahiert, und das Sortiersuffix wird korrekt entfernt.
  • Unterstützung für SQL-Datenbanken in Microsoft Fabric (EngineEdition 12): SQL-Datenbanken in Fabric (EngineEdition=12) als Azure-Edition erkannt. Zuvor wurde die Engine-Edition von Fabric nicht erkannt, was dazu führte, dass to_azure_sql_db den Wert False zurückgab und die Feature-Gate-Prüfungen fehlschlugen. Die Korrektur fügt EDITION_AZURE_SQL_FABRIC=12 zu _AZURE_EDITIONS hinzu und ordnet Fabric der neuesten unterstützten SQL Server-Version zu. JSONField, Hashfunktionen, Sortierungsintrospektion und der Abbau der Testdatenbank funktionieren jetzt auf Fabric ordnungsgemäß.

Version 1.7

Veröffentlichungsdatum: März 2026

Höhepunkte

  • Django 6.0-Unterstützung: Vollständige Kompatibilität mit Django 6.0, die Python 3.12 oder höher erfordert. Alle 6.0-API-Änderungen werden transparent vom Back-End verarbeitet.
  • Teilunterstützung: Das Back-End fügt partielle CompositePrimaryKeyUnterstützung für Django 5.2 CompositePrimaryKeyhinzu. Der Tupel-Vergleich mit Unterabfragen erfordert Django 5.2.4 oder neuer, und einige Randfälle bei Verbundschlüsseln und JSONField bestehen weiterhin. Django 5.2 selbst wurde zuerst in mssql-django 1.6 unterstützt.
  • SQL Server 2025-Unterstützung: Überprüft gegen SQL Server 2025.
  • ODBC Driver 18 als Standard: Das Backend verwendet jetzt standardmäßig ODBC Driver 18 for SQL Server und greift automatisch auf ODBC Driver 17 zurück, wenn Version 18 nicht installiert ist.

Versionsspezifische Notizen

Django-Version Hinweise
Django 5.1 inspectdb Kann Tabellen mit zusammengesetzten Primärschlüsseln prüfen, generiert aber keine vollständigen Modelldefinitionen dafür.
Django 5.2 CompositePrimaryKey wird nur teilweise unterstützt. Tupelvergleiche mit Unterabfragen erfordern Django 5.2.4 oder neuer, und einige Randfälle bei Migrationen sowie mit JSONField bestehen weiterhin.
Django 6.0 Erfordert Python 3.12 oder höher. Alle 5.2 Einschränkungen gelten.

Version 1.6

Veröffentlichungsdatum: August 2025

  • Django 5.1- und 5.2-Support hinzugefügt.
  • Verbesserte JSON-Funktionalität und Abwärtskompatibilität.
  • Verbesserte Pipelineinfrastruktur.

Version 1.5

Veröffentlichungsdatum: April 2024

  • Featureflag supports_comments für db_comments hinzugefügt.
  • Fehlerbehebungen für AutoField, Parameterformatierung und Schemaabfragen.

Version 1.4

Veröffentlichungsdatum: Januar 2024

  • Django 5.0-Support hinzugefügt.
  • Unterstützung für db_comment wurde hinzugefügt.
  • Fehlerkorrekturen für Datums-/Uhrzeitkonvertierungen und leere Aggregate.

Version 1.3

Veröffentlichungsdatum: Mai 2023

  • Django 4.2-Support hinzugefügt.
  • Unterstützung für die Groß-/Kleinschreibung bei Replace-Funktionen wurde hinzugefügt.
  • Fehlerbehebungen für die OFFSET Behandlung und den linken Abstand.

Version 1.2

Veröffentlichungsdatum: Dezember 2022

  • Django 4.1-Support hinzugefügt.
  • Unterstützung für Zeitzonen hinzugefügt (datetimeoffset mit USE_TZ=True).
  • Hinzugefügt return_rows_bulk_insert Option zum Abrufen der Bulk-Insert-ID.
  • Unterstützung für SQL Server 2022 hinzugefügt.
  • Unterstützung für Azure SQL Managed Instance hinzugefügtJSONField.

Version 1.1

Veröffentlichungsdatum: Juli 2022

  • Django 3.2- und 4.0-Support.
  • SQL Server 2016 und höher und Azure SQL-Datenbank Support.
  • pyodbc-basierte Konnektivität.