Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver nya funktioner, förbättringar och ändringar i varje version av mssql-django Django-databasserverdelen.
Version 2.0
Releasedatum: september 2026
Version 2.0 lägger till Microsoft:s mssql-python drivrutin som ett per-databas-alternativ till pyodbc, flyttar den stödda matrisen för Python, Django och SQL Server framåt, och levererar kompatibilitets- och tillförlitlighetsfixar.
pyodbc förblir standarddrivrutinen.
Höjdpunkter
-
stöd för drivrutinen mssql-python: Ett databasalias aktiveras med
"python_driver": "mssql_python"i sinOPTIONS-ordbok. Drivrutinen täcker anslutningar, anslutningspooler, återförsök, transaktioner och sparpunkter, datetimeoffset-värden, introspektion och Microsoft Entra-autentisering. Alias som utelämnar alternativet fortsätter att användaspyodbc, så inget ändras förrän du väljer att gå med. För mer information, se Välj databasdrivrutinen för mssql-django. -
Ingen separat ODBC-drivrutinsinstallation på mssql-python-vägen: Ett alias på
mssql-pythonbehöver inte en externt installerad Microsoft ODBC-drivrutin för SQL Server. Alias som finns kvar påpyodbcgör det fortfarande. - Moderniserad stödmatris: Python 3.10 till 3.14, Django 5.2 till 6.1 och SQL Server 2017 till 2025. Django 6.0 och senare versioner kräver Python 3.12 eller senare.
Felkorrigeringar
-
Explicita MARS-inställningar respekteras: Ett explicit
MARS_Connectionvärde iextra_paramsbevaras istället för att skrivas över med Windows standard, och matchningen ignorerar kasus. InställningenMARS_Connection=nofungerar nu med slutpunkter som avvisar MARS, inklusive Microsoft Fabric Warehouse. Med MARS avstängt buffrar ORM-iterationen resultaten innan de ger dem, så att en nästlad fråga kan återanvända anslutningen, vilket kostar mer minne på stora frågemängder. Denna anslutningslösning lägger inte till fullt lagerstöd för migreringar eller andra SQL Server-funktioner. -
Jokertecken inom hakparenteser escapas i uttrycksuppslagningar: Mönsteruppslagningar som jämför två fält med ett
F()-uttryck, till exempelcontainsochstartswith, escaper SQL Server-jokertecknet[. Parentestecken matchas som data istället för som wildcard-syntax. -
Citattecken undviks i inspectdb-schemanamn: Ett enda citat i
inspectdb --schemavärdet undviks i metadatafrågan, så schemanamn som innehåller ett citat producerar inte längre felaktigt Transact-SQL (T-SQL). -
En tom HOST ansluter till localhost via mssql-python-vägen: En utelämnad
HOST, som Django fyller i som en tom sträng, löser sig tilllocalhostistället för att misslyckas med validering med ett tomtSERVER=värde. Detta beteende stämmer överens med standardenpyodbcför lokala instanser.
Improvements
-
Pytz ersatte med Zoneinfo och TzData: Tidszonshantering använder standardbiblioteksmodulen
zoneinfo, där paketettzdatatillhandahåller IANA-tidszonsdatabasen i miljöer som inte levererar en, såsom Windows och minimala containerbilder. Förskjutningarna förblir korrekta hela året för zoner med negativ sommartidsförskjutning.pytzär inte längre ett beroende. -
Nyare SQL Server-versioner accepteras: En SQL Server-huvudversion som backend inte känner igen använder den senaste kapacitetsuppsättningen som backend känner till istället för att misslyckas med versionsvalidering. Du kan ansluta till en ny SQL Server-release innan en matchande
mssql-djangorelease släpps. Att acceptera anslutningen deklarerar inte otestade funktioner som stödda.
Brytande förändringar
- Python 3.8 och 3.9, samt Django 3.2 till 5.1, stöds inte längre. Kompatibilitetskoden för tidigare versioner finns kvar, men dessa kombinationer är inte testade eller listade.
-
mssql-python1.15.0 eller senare är ett nödvändigt beroende även när ett alias använderpyodbc. Installationen är begränsad till plattformar som har en kompatibelmssql-pythondistribution, vilket exkluderar SUSE Linux på ARM64. Projekt på andra plattformar förblir på version 1.8.0. - Deklarerat SQL Server-stöd börjar med SQL Server 2017, och deklarerat inbyggt anslutningsstöd är begränsat till Microsoft ODBC Driver 17 och Microsoft ODBC Driver 18.
Version 1.8.0
Releasedatum: augusti 2026
Version 1.8.0 lägger till stöd för Django 6.1 samtidigt som den fortsätter att stödja Django 3.2 till 6.0. Att flytta ett projekt från Django 6.0 till 6.1 kräver inga kodändringar om du inte använder någon av de två Django 6.1-funktionerna som beskrivs i detta avsnitt.
Höjdpunkter
-
Django 6.1-stöd: Validerat mot Django 6.1 samtidigt som det fortsätter att stödja Django 3.2 till 6.0. Beroendebegränsningen vidgas från
django>=3.2,<6.1tilldjango>=3.2,<6.2. -
Frågekompilatorn använder
quote_namepå Django 6.1: Django 6.1 föråldradquote_name_unless_alias. Backenden anropar nuSQLCompiler.quote_namei Django 6.1 och senare versioner, styrt av version så att tidigare versioner av Django inte påverkas. Slice- och offset-frågor, till exempelqs[a:b]ochOFFSET ... FETCH, kompileras utan utfasningsvarningar. -
Introspektion av främmande nycklar returnerar regeln ON DELETE: I Django 6.1 utökades
get_relations()till att inkludera regeln ON DELETE på databasnivå. Backenden returnerar den förväntade tredelade strukturen och mappar främmande nycklar i SQL Server på motsvarande sätt, såinspectdboch introspektion av främmande nycklar ger korrekta modeller.
Django 6.1-funktioner som inte stöds
Två Django 6.1-tillägg är inte tillgängliga på denna backend, av olika skäl:
-
Referensåtgärder på databasnivå (
DB_CASCADE,DB_SET_NULL, ):DB_SET_DEFAULTSQL Server avvisar främmande nyckelgrafer med flera kaskadvägar till samma tabell (fel 1785), så det finns ingen inbyggd sökväg för denna funktion i någon SQL Server-version. Med ett av dessa värden höjs Django-systemkontrollenfields.E324, som pekar dig till standard Django-nivåon_delete. -
Bitvisa aggregat (
BitAnd,BitOr, ):BitXorSQL Server har ingen inbyggd bitvis aggregatfunktion, och backend emulerar dem inte, så dessa aggregat höjerNotSupportedError.
Mer information finns i Begränsningar och funktioner som inte stöds i mssql-django.
Version 1.7.4
Releasedatum: juli 2026
Version 1.7.4 är en bakåtkompatibel patchutgåva med två fixar för rå och annoterad GROUP BY frågehantering.
Felkorrigeringar
-
IndexErroromGROUP BYfrågor med escaped%%och realparametrar: Tidigare gick varje fråga med enGROUP BYklausul igenom ett platshållaromskrivningssteg som matchade%\w+och ersatte den med{}. Det reguljära uttrycket matchade också escapade%%-literaler, vilket infogade falska platshållare och utlösteIndexError: Replacement index N out of rangenär en fråga kombinerade en%%-escape med en riktig%s-parameter. Det snävare regexet påverkar nu bara%%(bevaras ordagrant) och%s(den faktiska platshållaren), vilket är det enda mönster som kompilatorn någonsin genererar. Samma fix förhindrar också en orelaterad tyst bugg där ett oescaped mönster, somLIKE '%abc%'i en no-param-fråga, skrevs om tillLIKE '{}%'och returnerade fel rader. NotImplementedErrorförIntegerChoicesi råaGROUP BY-frågor: Tidigare utlöste detIntegerChoicesatt skicka ettGROUP BY-värde till en råGROUP BY-fråga som innehöll en -klausul. Hjälpfunktionen för parametertyper använde exakta typkontroller (typ == int), ochtype(IntegerChoices_value)är uppräkningsklassen snarare änint, så värdet hamnade därför i raise-satsen trots att det är en underklass tillint. Typkontroller använderisinstancenu , och förgreningenboolutvärderas före förgreningenint(eftersomboolden själv är enintunderklass). Enum-val binder nu korrekt,boolbinderBITfortfarande, och plainintär oförändrad.
Version 1.7.3
Utgivningsdatum: juni 2026
Version 1.7.3 är en bakåtkompatibel korrigeringsversion med två anslutnings- och körningskorrigeringar.
Felkorrigeringar
-
FA001förAuthentication=andra lägen änActiveDirectoryMsi: Tidigare hoppades serverdelen bara överTrusted_Connection=yesförActiveDirectoryMsi. Andra Entra-lägen som inte tillhandahåller någotUSER-värde (till exempelActiveDirectoryIntegrated,ActiveDirectoryDefault,ActiveDirectoryDeviceFlow) fick fortfarandeTrusted_Connection=yes, som ODBC-drivrutinen avvisade med feletFA001(Cannot use Authentication option with Integrated Security option). Korrigeringen identifierar alla explicitaAuthentication=värden med en gränsmedveten, skiftlägeskänslig matchning och hoppar över bådeTrusted_ConnectionochIntegrated Security=SSPI. Lösenordshanteringen är oförändrad:SqlPassword,ActiveDirectoryPasswordochActiveDirectoryServicePrincipalfortsätter att skickaPWD, medanActiveDirectoryInteractivefortsätter att utelämna den. -
KeyErrorpå underklassDatabaseWrapper: De cachelagradesql_server_versionegenskaperna ochto_azure_sql_dbegenskaperna förlitade sig påtype(self).__dict__introspektion avcached_property, vilket väckteKeyErrorförsta gången enDatabaseWrapperunderklass fick åtkomst till dem (en regression som introducerades i 1.7.1). Korrigeringen använder explicita dikteringar på klassnivå (_known_versions,_known_azures) som nås viaself., så sökningen matchas via MRO och underklassade omslutningar fungerar korrekt.
Version 1.7.2
Utgivningsdatum: maj 2026
Version 1.7.2 är en bakåtkompatibel korrigeringsversion med tidszon och kompatibilitetskorrigeringar.
Felkorrigeringar
-
.explain()kompatibilitet med Django 4.0 och senare: Åtgärdade kompilatorns hantering av Djangos explain-metadata så att.explain()inte längre misslyckas medAttributeErrori Django 4.0 och senare. Backenden följer nu versionsanpassade explain-fält och utlöser korrektNotSupportedErrorvid behov. - datetimeoffset-hantering av tidszoner: Åtgärdade tolkningen av datetimeoffset så att tidszonsförskjutningar bevaras i stället för att tappas bort. Returnerade datum/tid-värden har nu information om tidszon när så förväntas.
-
Now()medUSE_TZ=True: Uppdaterad SQL-generering förNow()att använda tidszonsmedvetna beteenden när tidszonsstöd är aktiverat, vilket förhindrar tidsstämpelavvikelser på icke-UTC-SQL Server värdar.
Version 1.7.1
Utgivningsdatum: april 2026
Version 1.7.1 är en bakåtkompatibel korrigeringsversion med felkorrigeringar.
Felkorrigeringar
-
FieldDoesNotExistvid ändring av fält med fallande indexordning: Korrigerade_alter_field()ischema.pyför att användaindex.fields_ordersi stället förindex.fieldsvid matchning av indexfältnamn. Den tidigare koden skickade vidare råa strängar för field-with-ordering (till exempel"-pub_date") tillmodel._meta.get_field(), vilket utlösteFieldDoesNotExist. Nu extraheras endast fältnamnet, och ordningssuffixet kasseras korrekt. -
Stöd för SQL-databas i Microsoft Fabric (EngineEdition 12): Kände igen SQL-databas i Fabric (
EngineEdition=12) som en Azure-version. Tidigare kändes Fabrics motorutgåva inte igen, vilket gjorde attto_azure_sql_dbreturneradeFalseoch att kontroller av funktionsspärrar misslyckades. Korrigeringen läggerEDITION_AZURE_SQL_FABRIC=12till_AZURE_EDITIONSoch mappar Fabric till den senaste SQL Server version som stöds.JSONField, hashfunktioner, inspektion av sorteringsordning och nedmontering av testdatabaser fungerar nu korrekt på Fabric.
Version 1.7
Utgivningsdatum: mars 2026
Höjdpunkter
- Stöd för Django 6.0: Fullständig kompatibilitet med Django 6.0, vilket kräver Python 3.12 eller senare. Alla 6.0 API-ändringar hanteras transparent av serverdelen.
-
Partiellt
CompositePrimaryKeystöd: Serverdelen lägger till partiellt stöd för Django 5.2CompositePrimaryKey. Jämförelse av tupler med underfrågor kräver Django 5.2.4 eller senare, och vissa kantfall för sammansatta nycklar ochJSONFieldkvarstår. Django 5.2 fick först stöd i mssql-django 1.6. - stöd för SQL Server 2025: Verifierat mot SQL Server 2025.
- Standardinställning för ODBC-drivrutin 18: Serverdelen är nu som standard ODBC-drivrutin 18 för SQL Server, med automatisk återställning till ODBC Driver 17 om version 18 inte är installerad.
Versionsspecifika anteckningar
| Django-version | Notes |
|---|---|
| Django 5.1 |
inspectdb kan inspektera tabeller med sammansatta primära nycklar, men det genererar inte fullständiga modelldefinitioner för dem. |
| Django 5.2 |
CompositePrimaryKey stödet är delvis. Jämförelse av tupler med underfrågor kräver Django 5.2.4 eller senare, och det återstår fortfarande vissa migreringar samt specialfall med JSONField. |
| Django 6.0 | Kräver Python 3.12 eller senare. Alla 5.2-begränsningar gäller. |
Version 1.6
Utgivningsdatum: augusti 2025
- Stöd för Django 5.1 och 5.2 har lagts till.
- Förbättrade JSON-funktioner och bakåtkompatibilitet.
- Förbättrad pipelineinfrastruktur.
Version 1.5
Utgivningsdatum: april 2024
- Lade till funktionsflaggan
supports_commentsfördb_comments. - Felkorrigeringar för
AutoField, parameterformatering och schemafrågor.
Version 1.4
Utgivningsdatum: januari 2024
- Stöd för Django 5.0 har lagts till.
- Stöd för
db_commenthar lagts till. - Felkorrigeringar för datum/tid-konverteringar och tomma aggregeringar.
Version 1.3
Utgivningsdatum: maj 2023
- Stöd för Django 4.2 har lagts till.
- Stöd för skiftlägeskänslig funktion för
Replacehar lagts till. - Felkorrigeringar för hanteringen av
OFFSEToch vänsterutfyllnad.
Version 1.2
Utgivningsdatum: december 2022
- Stöd för Django 4.1 har lagts till.
- Stöd för tidszon har lagts till (datetimeoffset med
USE_TZ=True). -
return_rows_bulk_insertalternativet för ID-hämtning vid massinfogning har lagts till. - Stöd för SQL Server 2022 har lagts till.
- Stöd för Azure SQL Managed Instance har lagts till
JSONField.
Version 1.1
Utgivningsdatum: juli 2022
- Stöd för Django 3.2 och 4.0.
- SQL Server 2016 och senare och Azure SQL Database support.
-
pyodbc-baserad anslutning.