Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje nové funkce, vylepšení a změny v každé verzi mssql-django back-endu databáze Django.
Verze 2.0
Datum vydání: září 2026
Verze 2.0 přidává ovladač společnosti Microsoft mssql-python jako alternativu pro jednotlivé databáze k pyodbc, aktualizuje matici podporovaných verzí pro Python, Django a SQL Server a přináší opravy kompatibility a spolehlivosti.
pyodbc zůstává výchozím ovladačem.
Zvýraznění
-
Podpora ovladače mssql-python: Databázový alias se aktivuje pomocí
"python_driver": "mssql_python"ve svém slovníkuOPTIONS. Ovladač podporuje připojení, sdružování připojení, opakované pokusy, transakce a body obnovení, hodnoty datetimeoffset, introspekci a ověřování Microsoft Entra. Aliasy, které tuto volbu neobsahují, nadále používajípyodbc, takže se nic nezmění, dokud se pro ni výslovně nerozhodnete. Pro více informací viz Vybrat ovladač databáze pro mssql-django. -
Žádná samostatná instalace ODBC ovladače na cestě mssql-python: alias on
mssql-pythonnepotřebuje externě nainstalovaný Microsoft ODBC ovladač pro SQL Server. Přezdívky, které zůstávají napyodbc, tak zůstávají i nadále. - Modernizovaná matice podpory: Python 3.10 až 3.14, Django 5.2 až 6.1 a SQL Server 2017 až 2025. Django 6.0 a novější verze vyžadují Python 3.12 nebo novší.
Opravy chyb
-
Explicitní nastavení MARS jsou respektována: explicitní
MARS_Connectionhodnota vextra_paramsje zachována místo toho, aby byla přepsána výchozím nastavením Windows, a shoda ignoruje případ. NastaveníMARS_Connection=nonyní funguje proti koncovým zařízením, které MARS odmítají, včetně Microsoft Fabric Warehouse. Když je MARS vypnuté, iterační vyrovnávací paměť ORM ukládá výsledky do vyrovnávací paměti, než je vrátí, aby vnořený dotaz mohl znovu využít stejné připojení, což u rozsáhlých sad výsledků spotřebovává více paměti. Tato oprava připojení nepřidává plnou podporu Warehouse pro migrace ani jiné funkce SQL Server. -
Zástupné znaky v hranatých závorkách se při vyhledávání pomocí výrazů escapují: Vyhledávání podle vzoru, které porovnává dvě pole pomocí výrazu
F(), napříkladcontainsastartswith, escapuje zástupný znak[v SQL Serveru. Závorkové znaky jsou vyhodnocovány jako data, nikoli jako syntaxe zástupných znaků. -
Uvozovky jsou v názvech schémat v inspectdb maskovány: Apostrof v hodnotě
inspectdb --schemaje v dotazu na metadata maskován, takže názvy schémat, které obsahují apostrof, již nevytvářejí neplatný Transact-SQL (T-SQL). -
Prázdný HOST se připojuje k localhostu po cestě mssql-python: Vynechaný
HOST, který Django vyplní jako prázdný řetězec, se místo neúspěchu validace s prázdnouSERVER=hodnotou vyřeší nalocalhost. Toto chování odpovídá výchozímupyodbcnastavení pro lokální instance.
Vylepšení
-
pytz nahrazen knihovnami zoneinfo a tzdata: Zpracování časových pásem používá modul
zoneinfostandardní knihovny, přičemž balíčektzdataposkytuje databázi časových pásem IANA v prostředích, která ji neobsahují, například ve Windows a v minimálních obrazech kontejnerů. Posuny zůstávají po celý rok správné u pásem se záporným posunem letního času.pytzuž není závislostí. -
Novější verze SQL Serveru jsou podporovány: Pokud backend nerozpozná hlavní verzi SQL Serveru, použije nejnovější sadu funkcí, kterou podporuje, namísto selhání při ověřování verze. Můžete se připojit k nové verzi SQL Server ještě před odesláním odpovídající
mssql-djangoverze. Přijetí připojení neznamená, že netestované funkce jsou podporovány.
Zásadní změny
- Python 3.8 a 3.9 a Django 3.2 až 5.1 již nejsou podporovány. Kód kompatibility pro starší verze zůstává v platnosti, ale tyto kombinace nejsou testovány ani uvedeny.
-
mssql-python1.15.0 nebo novější je povinná závislost i tehdy, když alias používápyodbc. Instalace je omezena na platformy s kompatibilnímssql-pythondistribucí, což vylučuje SUSE Linux na ARM64. Projekty na jiných platformách zůstávají na verzi 1.8.0. - Deklarovaná podpora SQL Server začíná s SQL Server 2017 a deklarovaná nativní podpora konektivity je omezena na Microsoft ODBC Driver 17 a Microsoft ODBC Driver 18.
Verze 1.8.0
Datum vydání: srpen 2026
Verze 1.8.0 přidává podporu pro Django 6.1, zatímco nadále podporuje Django 3.2 až 6.0. Přesun projektu z Django 6.0 na 6.1 nevyžaduje žádné změny kódu, pokud nepoužijete jednu ze dvou funkcí Django 6.1 popsaných v této sekci.
Zvýraznění
-
Podpora Django 6.1: Ověřeno proti Django 6.1, přičemž nadále podporujeme Django 3.2 až 6.0. Závislostní omezení se rozšiřuje z
django>=3.2,<6.1do .django>=3.2,<6.2 -
Query compiler používá
quote_namev Djangu 6.1: Django 6.1 označiloquote_name_unless_aliasjako zastaralé. Backend nyní v Djangu 6.1 a novějších verzích voláSQLCompiler.quote_name, přičemž je to podmíněno verzí, takže starší verze Django zůstávají beze změny. Dotazy s rozdělením a offsetem, jakoqs[a:b]jsou aOFFSET ... FETCH, se kompilují bez varování před zastaratelností. -
Introspekce cizích klíčů vrací pravidlo ON DELETE: Django 6.1 rozšířilo
get_relations()o pravidlo ON DELETE na úrovni databáze. Backend vrací očekávanou třídílnou strukturu a odpovídajícím způsobem mapuje cizí klíče SQL ServeruNO ACTION, takžeinspectdbi introspekce cizích klíčů vytvářejí správné modely.
Funkce Django 6.1, které nejsou podporovány
Dva přídavky Django 6.1 nejsou na tomto backendu dostupné z různých důvodů:
-
Referenční akce na úrovni databáze (
DB_CASCADE,DB_SET_NULL, ):DB_SET_DEFAULTSQL Server odmítá cizí klíčové grafy s více kaskádovými cestami do stejné tabulky (chyba 1785), takže pro tuto funkci neexistuje nativní cesta na žádné verzi SQL Server. Použití jedné z těchto hodnot zvyšuje kontrolufields.E324systému Django , která vás nasměruje na standardní Django úroveňon_delete. -
Bitové agregáty (
BitAnd,BitOr, ):BitXorSQL Server nemá nativní bitovou agregační funkci a backend je neemuluje, takže tyto agregáty zvyšujíNotSupportedError.
Další informace naleznete v tématu Omezení a nepodporované funkce v mssql-django.
Verze 1.7.4
Datum vydání: červenec 2026
Verze 1.7.4 je zpětně kompatibilní patch s dvěma opravami pro surové a anotované GROUP BY zpracování dotazů.
Opravy chyb
-
IndexErrorproGROUP BYdotazy s escapovanými%%a skutečnými parametry: Dříve procházel každý dotaz s klauzulíGROUP BYkrokem přepisování zástupných symbolů, který vyhledal%\w+a nahradil jej za{}. Tento regex také zachycoval escapované literály%%, což vkládalo falešné zástupné symboly a vyvolávaloIndexError: Replacement index N out of rangevždy, když dotaz kombinoval escape sekvenci%%se skutečným parametrem%s. Zúžený regex se nyní vztahuje pouze na%%(ponechaný beze změny) a%s(skutečný zástupný symbol), což je jediný vzor, který kompilátor vůbec generuje. Stejná oprava také zabraňuje výskytu nesouvisející tiché chyby, kdy byl neescapovaný vzor, napříkladLIKE '%abc%', v dotazu bez parametrů přepsán naLIKE '{}%'a dotaz pak vrátil nesprávné řádky. -
NotImplementedErrorproIntegerChoicesv surovýchGROUP BYdotazech: Dříve bylo předáníIntegerChoiceshodnoty do surového dotazu, který obsahoval klauzuliGROUP BY, vyvolávaloNotImplementedError: Not supported type <enum ...>. Pomocná funkce pro určování typů parametrů používala přesné kontroly typů (typ == int) atype(IntegerChoices_value)je výčtová třída, a neint, takže hodnota nakonec skončila ve větvi vyvolávající výjimku, i když je podtřídouint. Kontroly typu nyní používajíisinstance, a větevboolje vyhodnocena před větvíint(protožeboolsama je podtřídouint). Hodnoty výčtového typu se nyní správně navazují,boolse stále navazuje naBITa prostéintzůstává beze změny.
Verze 1.7.3
Datum vydání: červen 2026
Verze 1.7.3 je zpětně kompatibilní opravná verze se dvěma opravami připojení a běhového prostředí.
Opravy chyb
-
FA001proAuthentication=režimy jiné nežActiveDirectoryMsi: Dříve backend přeskočilTrusted_Connection=yespouze proActiveDirectoryMsi. Jiné režimy Entra, které neposkytují hodnotuUSER(napříkladActiveDirectoryIntegrated,ActiveDirectoryDefault,ActiveDirectoryDeviceFlow), stále obdrželyTrusted_Connection=yes, které ovladač ODBC odmítl s chybouFA001(Cannot use Authentication option with Integrated Security option). Oprava detekuje libovolnou explicitní hodnotuAuthentication=pomocí porovnání zohledňujícího hranice a nerozlišujícího velikost písmen a přeskočí jakTrusted_Connection, takIntegrated Security=SSPI. Zpracování hesla se nemění:SqlPassword,ActiveDirectoryPasswordaActiveDirectoryServicePrincipalnadále odesílajíPWD, zatímcoActiveDirectoryInteractivejej nadále vynechává. -
KeyErrorna podtříděnémDatabaseWrapper: Vlastnostisql_server_versionato_azure_sql_dbuložené v mezipaměti se spoléhaly na introspekcitype(self).__dict__ucached_property, která při prvním přístupu podtřídyKeyErrork těmto vlastnostem vyvolalaDatabaseWrapper(regrese zavedená ve verzi 1.7.1). Oprava používá explicitní slovníky na úrovni třídy (_known_versions,_known_azures), ke kterým se přistupuje přesself., takže se vyhledávání vyhodnocuje podle MRO a obaly odvozených tříd fungují správně.
Verze 1.7.2
Datum vydání: květen 2026
Verze 1.7.2 je zpětně kompatibilní opravná verze obsahující opravy časových pásem a kompatibility.
Opravy chyb
-
.explain()Kompatibilita s Django 4.0 a novějšími verzemi: Opravili jsme zpracování metadat explain v Django kompilátorem, takže.explain()už na Django 4.0 a novějších verzích neselhává sAttributeError. Backend se nyní řídí poli explain odpovídajícími verzi a v případě potřeby správně vyvoláNotSupportedError. - zpracování časového pásma u datetimeoffset: Opraveno parsování datetimeoffset, takže posuny časových pásem se zachovají namísto jejich zahození. Vrácené hodnoty data a času nyní tam, kde se to očekává, obsahují informaci o časovém pásmu.
-
Now()sUSE_TZ=True: Aktualizováno generování SQL proNow(), aby při povolené podpoře časových pásem používalo chování zohledňující časové pásmo, což zabraňuje posunu časových razítek na hostitelích SQL Serveru, které nepoužívají UTC.
Verze 1.7.1
Datum vydání: duben 2026
Verze 1.7.1 je zpětně kompatibilní verze oprav s opravami chyb.
Opravy chyb
-
FieldDoesNotExistpři změně polí v sestupném pořadí indexů: Opraveno_alter_field()vschema.py, aby se při určování názvů polí indexu používaloindex.fields_ordersmístoindex.fields. Předchozí kód předával nezpracované řetězce field-with-ordering (například"-pub_date") domodel._meta.get_field(), což vyvolaloFieldDoesNotExist. Teď se extrahuje jenom název pole a přípona řazení se správně zahodí. -
Podpora databáze SQL v Microsoft Fabric (EngineEdition 12): Databáze SQL v Microsoft Fabric (
EngineEdition=12) byla rozpoznána jako edice Azure. Dříve nebyla edice enginu Fabric rozpoznána, což způsobovalo, žeto_azure_sql_dbvraceloFalsea kontroly feature-gate selhávaly. Oprava přidáváEDITION_AZURE_SQL_FABRIC=12do_AZURE_EDITIONSa mapuje Fabric na nejnovější podporovanou verzi serveru SQL Server.JSONField, hašovací funkce, introspekce kolace a rušení testovací databáze nyní ve Fabric fungují správně.
Verze 1.7
Datum vydání: březen 2026
Zvýraznění
- Podpora Django 6.0: Úplná kompatibilita s Django 6.0, která vyžaduje Python 3.12 nebo novější. Back-end zpracovává všechny změny rozhraní API verze 6.0 transparentně.
-
Částečná
CompositePrimaryKeypodpora: Back-end přidává částečnou podporu pro Django 5.2CompositePrimaryKey. Porovnávání n-tic se vnořenými dotazy vyžaduje Django 5.2.4 nebo novější verzi a některé okrajové případy týkající se složených klíčů aJSONFieldpřetrvávají. Django 5.2 byl poprvé podporován v mssql-django 1.6. - podpora SQL Server 2025: Ověřeno v SQL Server 2025.
- Výchozí ovladač ODBC 18: Back-end teď pro SQL Server ve výchozím nastavení používá ovladač ODBC 18 s automatickým náhradním ovladačem ODBC 17, pokud není nainstalovaná verze 18.
Poznámky ke konkrétní verzi
| Verze Django | Poznámky |
|---|---|
| Django 5.1 |
inspectdb může zkontrolovat tabulky pomocí složených primárních klíčů, ale nevygeneruje pro ně úplné definice modelu. |
| Django 5.2 |
CompositePrimaryKey podpora je částečná. Porovnávání n-tic se subvýběry vyžaduje Django ve verzi 5.2.4 nebo novější a stále zbývají některé okrajové případy týkající se migrací a JSONField. |
| Django 6.0 | Vyžaduje Python 3.12 nebo novější. Platí všechna omezení 5.2. |
Verze 1.6
Datum vydání: srpen 2025
- Přidání podpory Django 5.1 a 5.2
- Vylepšené funkce JSON a zpětná kompatibilita
- Vylepšená infrastruktura kanálů.
Verze 1.5
Datum vydání: duben 2024
- Byl přidán
supports_commentspřepínač funkce prodb_comments. - Opravy chyb týkající se
AutoField, formátování parametrů a dotazů na schéma.
Verze 1.4
Datum vydání: leden 2024
- Přidání podpory Django 5.0
- Byla přidána podpora
db_comment. - Opravy chyb pro převody data a času a prázdné agregace
Verze 1.3
Datum vydání: květen 2023
- Byla přidána podpora Django 4.2.
- Byla přidána podpora funkcí rozlišující malá a velká
Replacepísmena. - Opravy chyb ve zpracování
OFFSETa v levém odsazení.
Verze 1.2
Datum vydání: prosinec 2022
- Byla přidána podpora Django 4.1.
- Přidání podpory časového pásma (datetimeoffset s
USE_TZ=True). - Byla přidána možnost
return_rows_bulk_insertpro získání ID při hromadném vložení. - Přidání podpory pro SQL Server 2022
- Byla přidána podpora
JSONFieldpro Azure SQL Managed Instance
Verze 1.1
Datum vydání: červenec 2022
- Podpora django 3.2 a 4.0
- SQL Server 2016 a novější a podporu Azure SQL Database.
- konektivita založená na
pyodbc.