Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive nuove funzionalità, miglioramenti e modifiche in ogni versione del back-end del mssql-django database Django.
Versione 1.8.0
Data di uscita: agosto 2026
La versione 1.8.0 aggiunge il supporto per Django 6.1 continuando però a supportare Django dalla 3.2 alla 6.0. Spostare un progetto da Django 6.0 a 6.1 non richiede modifiche al codice a meno che non si utilizzi una delle due funzionalità di Django 6.1 descritte in questa sezione.
Elementi di rilievo
-
Supporto Django 6.1: Validato contro Django 6.1 attraverso la matrice supportata di SQL Server e Azure SQL. Il vincolo di dipendenza si allarga da
django>=3.2,<6.1adjango>=3.2,<6.2. -
Il compilatore di query utilizza
quote_namesu Django 6.1: Django 6.1 ha deprecatoquote_name_unless_alias. Il backend ora chiamaSQLCompiler.quote_namein Django 6.1 e nelle versioni successive, in base alla versione, così le versioni precedenti di Django non subiscono modifiche. Le query con slicing e offset, comeqs[a:b]eOFFSET ... FETCH, vengono compilate senza avvisi di deprecazione. -
L'introspezione della chiave esterna restituisce la regola ON DELETE: Django 6.1 ha ampliato
get_relations()per includere la regola ON DELETE a livello del database. Il backend restituisce la forma attesa in tre parti e mappa di conseguenza le chiavi esterne di SQL ServerNO ACTION, cosìinspectdbe l'introspezione delle chiavi esterne producono modelli corretti.
Funzionalità di Django 6.1 che non sono supportate
Due aggiunte di Django 6.1 non sono disponibili in questo backend, per motivi diversi:
-
Azioni referenziali a livello di database (
DB_CASCADE,DB_SET_NULL,DB_SET_DEFAULT): SQL Server rifiuta i grafi a chiave esterna con più percorsi a cascata verso la stessa tabella (errore 1785), quindi non esiste un percorso nativo per questa funzione su nessuna versione di SQL Server. L'uso di uno di questi valori attiva il controllo di sistema di Djangofields.E324, che rimanda alon_deletestandard a livello di Django. -
Aggregati bit a bit (
BitAnd,BitOr,BitXor): SQL Server non ha una funzione di aggregazione bit a bit nativa e il backend non li emula, quindi questi aggregati generanoNotSupportedError.
Per altre informazioni, vedere Limitazioni e funzionalità non supportate in mssql-django.
Versione 1.7.4
Data di uscita: luglio 2026
La versione 1.7.4 è una patch retrocompatibile con due correzioni per la gestione delle query grezze e annotate GROUP BY .
Correzioni di bug
-
IndexErrornelle queryGROUP BYcon%%con caratteri di escape e parametri reali: In precedenza, qualsiasi query con una clausolaGROUP BYveniva sottoposta a una fase di riscrittura dei segnaposto che individuava%\w+e lo sostituiva con{}. Quel regex corrispondeva anche a letterali%%sfuggiti, che iniettavano segnaposto fantasma e si alzavanoIndexError: Replacement index N out of rangeogni volta che una query combinava un%%-escape con un parametro reale%s. Il regex ristretto ora tocca%%solo (conservato parola per parola) e%s(il vero segnaposto), che è l'unico pattern che il compilatore emette mai. La stessa correzione previene anche un bug silenzioso non correlato, per cui un pattern senza escape comeLIKE '%abc%'in una query senza parametri veniva riscritto comeLIKE '{}%'e restituiva righe errate. -
NotImplementedErrorperIntegerChoicesin queryGROUP BYgrezze: In precedenza, il passaggio di un valoreIntegerChoicesin una query grezza che conteneva una clausolaGROUP BYgeneravaNotImplementedError: Not supported type <enum ...>. L'aiutante per la tipizzazione dei parametri ha usato verifiche di tipo esatte (typ == int), etype(IntegerChoices_value)è la classe enum invece diint, quindi il valore è passato all'innalzamento anche se sottoclasseint. I controlli di tipo ora usanoisinstance, e ilboolbranch viene valutato prima delintbranch (perchéboolè esso stesso unaintsottoclasse). Le opzioni enum ora vengono associate correttamente,boolè ancora associato aBIT, e il sempliceintrimane invariato.
Versione 1.7.3
Data di rilascio: giugno 2026
La versione 1.7.3 è una versione patch compatibile con le versioni precedenti con due correzioni di connessione e runtime.
Correzioni di bug
-
FA001perAuthentication=modalità diverse daActiveDirectoryMsi: in precedenza, il back-end ignoravaTrusted_Connection=yessolo perActiveDirectoryMsi. Altre modalità Entra che non forniscono unUSERvalore ( ad esempio ,ActiveDirectoryIntegrated,ActiveDirectoryDefault,ActiveDirectoryDeviceFlow) hanno ancora ricevutoTrusted_Connection=yes, che il driver ODBC ha rifiutato conFA001(Cannot use Authentication option with Integrated Security option). La correzione rileva qualsiasi valore esplicitoAuthentication=con una corrispondenza con riconoscimento dei limiti, senza distinzione tra maiuscole e minuscole e ignora siaTrusted_ConnectioncheIntegrated Security=SSPI. La gestione delle password è invariata:SqlPassword,ActiveDirectoryPasswordeActiveDirectoryServicePrincipalcontinuano a inviarePWD, mentreActiveDirectoryInteractivecontinua a ometterla. -
KeyErrornelle sottoclassi diDatabaseWrapper: le proprietàsql_server_versioneto_azure_sql_dbmemorizzate nella cache si basavano sull'introspezionetype(self).__dict__dicached_property, che sollevavaKeyErrorla prima volta che una sottoclasse diDatabaseWrappertentava di accedervi (una regressione introdotta nella versione 1.7.1). La correzione usa dizionari espliciti a livello di classe (_known_versions,_known_azures), accessibili tramiteself., quindi la risoluzione della ricerca avviene tramite l’MRO e i wrapper sottoclassati funzionano correttamente.
Versione 1.7.2
Data di rilascio: maggio 2026
La versione 1.7.2 è una release correttiva retrocompatibile con correzioni relative al fuso orario e alla compatibilità.
Correzioni di bug
-
.explain()compatibilità per Django 4.0 e versioni successive: correzione della gestione del compilatore dei metadati di spiegazione di Django in modo che.explain()non riesca più conAttributeErrorin Django 4.0 e versioni successive. Il backend ora segue i campi `explain` appropriati alla versione e solleva correttamenteNotSupportedErrorquando necessario. - gestione del fuso orario di datetimeoffset: corretta l'analisi di datetimeoffset in modo che gli offset di fuso orario vengano mantenuti anziché eliminati. Le date e ore restituite ora includono il fuso orario quando previsto.
-
Now()conUSE_TZ=True: generazione SQL aggiornata perNow()per utilizzare un comportamento con riconoscimento del fuso orario quando il supporto del fuso orario è abilitato, evitando lo slittamento del timestamp sugli host SQL Server non UTC.
Versione 1.7.1
Data di rilascio: aprile 2026
La versione 1.7.1 è una versione di patch compatibile con le versioni precedenti con correzioni di bug.
Correzioni di bug
-
FieldDoesNotExistdurante la modifica dei campi con ordinamento decrescente dell'indice: corretto_alter_field()inschema.pyper utilizzareindex.fields_ordersal posto diindex.fieldsdurante la risoluzione dei nomi dei campi dell'indice. Il codice precedente passava stringhe raw di campo con ordinamento (ad esempio,"-pub_date") amodel._meta.get_field(), provocandoFieldDoesNotExist. Ora viene estratto solo il nome del campo e il suffisso di ordinamento viene rimosso correttamente. -
Supporto per il database SQL in Microsoft Fabric (EngineEdition 12): Riconoscimento del database SQL in Fabric (
EngineEdition=12) come edizione di Azure. In precedenza, l'edizione del motore di Fabric non veniva riconosciuta, causando la restituzione dito_azure_sql_dbda parte diFalsee il fallimento dei controlli del feature gate. La correzione aggiungeEDITION_AZURE_SQL_FABRIC=12a_AZURE_EDITIONSe associa Fabric all'ultima versione supportata di SQL Server.JSONField, le funzioni hash, l'introspezione delle regole di confronto e lo smantellamento del database di test ora funzionano correttamente su Fabric.
Versione 1.7
Data di rilascio: marzo 2026
Elementi di rilievo
- Supporto di Django 6.0: compatibilità completa con Django 6.0, che richiede Python 3.12 o versione successiva. Tutte le modifiche api 6.0 vengono gestite in modo trasparente dal back-end.
-
Supporto parziale
CompositePrimaryKey: il back-end aggiunge il supporto parziale per Django 5.2CompositePrimaryKey. Il confronto tra tuple e sottoquery richiede Django 5.2.4 o versioni successive e permangono alcuni casi limite relativi alle chiavi composite e aJSONField. Django 5.2 è stato supportato per la prima volta in mssql-django 1.6. - Supporto di SQL Server 2025: Convalidato con SQL Server 2025.
- ODBC Driver 18 predefinito: il back-end ora usa per impostazione predefinita ODBC Driver 18 per SQL Server, con passaggio automatico a ODBC Driver 17 se la versione 18 non è installata.
Note specifiche della versione
| Versione di Django | Note |
|---|---|
| Django 5.1 |
inspectdb può esaminare le tabelle con chiavi primarie composite, ma non genera definizioni di modello complete per loro. |
| Django 5.2 |
CompositePrimaryKey il supporto è parziale. Il confronto tra tuple e sottoquery richiede Django 5.2.4 o versione successiva e alcuni casi di migrazione più JSONField edge rimangono. |
| Django 6.0 | Richiede Python 3.12 o versione successiva. Si applicano tutte le limitazioni 5.2. |
Versione 1.6
Data di rilascio: agosto 2025
- Aggiunto il supporto per Django 5.1 e 5.2.
- Funzionalità JSON avanzate e compatibilità con le versioni precedenti.
- Infrastruttura della pipeline migliorata.
Versione 1.5
Data di rilascio: aprile 2024
- Aggiunto il flag di funzionalità
supports_commentsperdb_comments. - Correzioni di bug per
AutoField, formattazione dei parametri e query dello schema.
Versione 1.4
Data di rilascio: gennaio 2024
- Aggiunto il supporto per Django 5.0.
- Aggiunto supporto
db_comment - Correzioni di bug per conversioni di data/ora e aggregazioni vuote.
Versione 1.3
Data di rilascio: maggio 2023
- Aggiunto il supporto per Django 4.2.
- Aggiunto il supporto per le funzioni
Replacecon distinzione tra maiuscole e minuscole. - Correzioni di bug per la gestione di
OFFSETe il padding sinistro.
Versione 1.2
Data di rilascio: dicembre 2022
- Aggiunto il supporto per Django 4.1.
- Aggiunto il supporto per il fuso orario (datetimeoffset con
USE_TZ=True). - Aggiunta l'opzione
return_rows_bulk_insertper il recupero dell'ID dell'inserimento massivo. - Aggiunto il supporto per SQL Server 2022.
- Aggiunto il supporto
JSONFieldper Istanza gestita di SQL di Azure.
Versione 1.1
Data di rilascio: luglio 2022
- Supporto di Django 3.2 e 4.0.
- SQL Server 2016 e versioni successive e database SQL di Azure sono supportati.
- Connettività basata su
pyodbc.