Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden neue Features, Verbesserungen und Änderungen in jeder Version des mssql-django Django-Datenbank-Back-End beschrieben.
Version 1.8.0
Veröffentlichungsdatum: August 2026
Version 1.8.0 fügt Unterstützung für Django 6.1 hinzu, unterstützt aber weiterhin Django 3.2 bis 6.0. Der Umzug eines Projekts von Django 6.0 auf 6.1 erfordert keine Codeänderungen, es sei denn, Sie nutzen eine der beiden in diesem Abschnitt beschriebenen Django 6.1-Funktionen.
Höhepunkte
-
Unterstützung von Django 6.1: Validiert gegen Django 6.1 über den unterstützten SQL Server und die Azure SQL-Matrix. Die Abhängigkeitsbedingung erweitert sich von
django>=3.2,<6.1aufdjango>=3.2,<6.2. -
Query Compiler verwendet
quote_nameauf Django 6.1: Django 6.1 wurde veraltet.quote_name_unless_aliasDas Backend ruft nun auf Django 6.1 und neueren VersionenSQLCompiler.quote_nameauf; der Aufruf ist versionsabhängig gesteuert, sodass frühere Django-Versionen unverändert bleiben. Abfragen mit Slicing und Offset, wieqs[a:b]undOFFSET ... FETCH, werden ohne Veraltungswarnungen kompiliert. -
Die Introspektion von Fremdschlüsseln gibt die ON-DELETE-Regel zurück: In Django 6.1 wurde
get_relations()erweitert, um die ON-DELETE-Regel auf Datenbankebene einzuschließen. Das Backend liefert die erwartete dreiteilige Struktur zurück und ordnet SQL Server-FremdschlüsselNO ACTIONentsprechend zu, sodassinspectdbund die Fremdschlüsselintrospektion korrekte Modelle erzeugen.
Django 6.1-Funktionen, die nicht unterstützt werden
Zwei Django 6.1-Erweiterungen sind aus unterschiedlichen Gründen auf diesem Backend nicht verfügbar:
-
Datenbankebene referenzielle Aktionen (
DB_CASCADE,DB_SET_NULL,DB_SET_DEFAULT): SQL Server lehnt Fremdschlüsselgraphen mit mehreren Kaskadenpfaden zur selben Tabelle ab (Fehler 1785), daher gibt es keinen nativen Pfad für diese Funktion in keiner SQL Server-Version. Mit einem dieser Werte wird die Django-Systemprüfungfields.E324ausgelöst, die auf die Standard-Django-Ebeneon_deletehinweist. -
Bitweise Aggregatfunktionen (
BitAnd,BitOr,BitXor): SQL Server hat keine native bitweise Aggregatfunktion, und das Backend emuliert sie nicht, sodass diese AggregateNotSupportedErrorauslösen.
Weitere Informationen finden Sie unter Einschränkungen und nicht unterstützte Features in mssql-django.
Version 1.7.4
Veröffentlichungsdatum: Juli 2026
Version 1.7.4 ist eine abwärtskompatible Patch-Version mit zwei Korrekturen für die Verarbeitung von rohen und annotierten GROUP BY Abfragen.
Fehlerkorrekturen
-
IndexErrorzuGROUP BY-Abfragen mit maskierten%%und echten Parametern: Früher durchlief jede Abfrage mit einerGROUP BY-Klausel einen Schritt zum Umschreiben von Platzhaltern, der%\w+erkannte und durch{}ersetzte. Dieser reguläre Ausdruck erfasste auch maskierte%%-Literale, wodurch Phantom-Platzhalter eingefügt undIndexError: Replacement index N out of rangeausgelöst wurden, wenn eine Abfrage ein%%-Escape mit einem echten%s-Parameter kombinierte. Die eingegrenzte Regex betrifft jetzt nur noch%%(unverändert beibehalten) und%s(den eigentlichen Platzhalter) – das einzige Muster, das der Compiler jemals erzeugt. Die gleiche Korrektur verhindert auch einen nicht damit zusammenhängenden stillen Fehler, bei dem ein nicht maskiertes Muster wieLIKE '%abc%'in einer Abfrage ohne Parameter zuLIKE '{}%'umgeschrieben wurde und falsche Zeilen zurückgab. -
NotImplementedErrorfürIntegerChoicesin rohenGROUP BY-Abfragen: Zuvor löste die Übergabe einesIntegerChoices-Werts an eine rohe Abfrage, die eineGROUP BY-Klausel enthielt,NotImplementedError: Not supported type <enum ...>aus. Die Hilfsfunktion für die Parametertypisierung verwendete exakte Typprüfungen (typ == int), undtype(IntegerChoices_value)ist die Enumeration-Klasse und nichtint, sodass für den Wert dennoch die Ausnahme ausgelöst wurde, obwohl er eine Unterklasse vonintist. Typüberprüfungen verwenden nunisinstance, und derbool-Zweig wird vor demint-Zweig ausgewertet (weilboolselbst eineint-Unterklasse ist). Enum-Optionen binden jetzt korrekt,boolbindenBITimmer noch, und Plainintbleibt unverändert.
Version 1.7.3
Veröffentlichungsdatum: Juni 2026
Version 1.7.3 ist eine abwärtskompatible Patchversion mit zwei Verbindungs- und Laufzeitfixes.
Fehlerkorrekturen
-
FA001für andereAuthentication=-Modi alsActiveDirectoryMsi: Zuvor übersprang das BackendTrusted_Connection=yesnur fürActiveDirectoryMsi. Andere Entra-Modi, die keinenUSER-Wert bereitstellen (z. B.ActiveDirectoryIntegrated,ActiveDirectoryDefault,ActiveDirectoryDeviceFlow), erhielten dennochTrusted_Connection=yes, was der ODBC-Treiber mitFA001(Cannot use Authentication option with Integrated Security option) ablehnte. Die Korrektur erkennt jeden expliziten WertAuthentication=mittels eines abgrenzungssensitiven Abgleichs ohne Berücksichtigung der Groß-/Kleinschreibung und überspringt sowohlTrusted_Connectionals auchIntegrated Security=SSPI. Die Kennwortbehandlung bleibt unverändert:SqlPassword,ActiveDirectoryPasswordundActiveDirectoryServicePrincipalsendenPWDweiterhin, währendActiveDirectoryInteractivees weiterhin weglässt. -
KeyErrorbei Unterklassen vonDatabaseWrapper: Die zwischengespeicherten Eigenschaftensql_server_versionundto_azure_sql_dbbasierten auf dertype(self).__dict__-Introspektion voncached_property, wodurch beim ersten Zugriff einerKeyError-Unterklasse daraufDatabaseWrapperausgelöst wurde (eine in 1.7.1 eingeführte Regression). Der Fix verwendet explizite Wörterbücher auf Klassenebene (_known_versions,_known_azures), auf die überself.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 mitAttributeErrorfehlschlägt. Das Back-End verwendet nun versionsgerechte Explain-Felder und löst bei Bedarf korrektNotSupportedErroraus. - 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()mitUSE_TZ=True: SQL-Generierung fürNow()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
-
FieldDoesNotExistbeim Ändern von Feldern mit absteigender Indexreihenfolge:_alter_field()inschema.pyso korrigiert, dass beim Auflösen von Index-Feldnamenindex.fields_ordersanstelle vonindex.fieldsverwendet wird. Der vorherige Code übergab unverarbeitete Zeichenfolgen für Felder mit Sortierung (zum Beispiel"-pub_date") anmodel._meta.get_field(), wasFieldDoesNotExistauslö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, dassto_azure_sql_dbden WertFalsezurückgab und die Feature-Gate-Prüfungen fehlschlugen. Die Korrektur fügtEDITION_AZURE_SQL_FABRIC=12zu_AZURE_EDITIONShinzu 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.2CompositePrimaryKeyhinzu. Der Tupel-Vergleich mit Unterabfragen erfordert Django 5.2.4 oder neuer, und einige Randfälle bei Verbundschlüsseln undJSONFieldbestehen 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_commentsfürdb_commentshinzugefü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_commentwurde 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
OFFSETBehandlung 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). -
return_rows_bulk_insert-Option zum Abrufen der Masseneinfügungs-ID wurde hinzugefügt. - Unterstützung für SQL Server 2022 hinzugefügt.
- Unterstützung für Azure SQL Managed Instance hinzugefügt
JSONField.
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.