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 elenca cosa è cambiato in ogni release del driver mssql-python, il più recente per la prima volta. Ogni sezione copre nuove funzionalità, cambiamenti comportamentali e correzioni di bug per una versione.
Per le versioni attualmente supportate da Microsoft, vedi ciclo di vita del supporto.
MSSQL-Python 1.14.0
Data di uscita: agosto 2026
Enhancements
Il rilevamento e il binding dei parametri vengono eseguiti in codice nativo
Il rilevamento e il binding dei tipi di parametri ora vengono eseguiti in una singola pipeline nativa invece di chiamate Python per parametro. Questo cambiamento risolve un significativo collo di bottiglia nelle prestazioni, con miglioramenti di throughput più elevati da end to end in operazioni più grandi come gli inserti in massa. Non è necessario cambiare la domanda.
Correzioni dei bug
L'argomento timeout per connect() impostare il timeout della query invece del timeout dell'autenticazione
L'argomento timeout ora imposta SQL_ATTR_LOGIN_TIMEOUT e limita il tentativo di autenticazione, che è ciò che descrivono il nome dell'argomento e la documentazione. Nelle versioni precedenti diventava il timeout per query per affermazione, quindi connect(timeout=30) non limitava la durata di un tentativo di connessione e abortiva le query dopo 30 secondi. Il timeout per query per istruzione rimane disponibile come proprietà Connection.timeout .
Importante
Se hai passato timeout a connect() per annullare query di lunga durata, quel comportamento non si ripete più. Invece set.Connection.timeout Lo stesso vale se ti sei affidato connect(timeout=) per allargare il timeout bulkcopy() di connessione che usa per la connessione interna: imposta Connection.timeout prima di creare il cursore.
Per maggiori informazioni, vedi Timeout di connessione.
bulkcopy() Rifiutato timeout=0
Un timeout di 0 generava un errore di validazione, anche se 0 significava nessun timeout nell'API di copia bulk sottostante. Il metodo ora accetta 0 e disabilita il timeout dell'operazione. I valori negativi, non interi e booleani sono ancora rifiutati.
Per ulteriori informazioni, vedi Copia in massa.
La pulizia ha sostituito l'eccezione originale di recupero di Arrow
Quando un recupero da un lettore Arrow falliva, il percorso di pulizia del driver generava un secondo errore che sostituiva quello originale, così i chiamanti vedevano un errore di pulizia invece del motivo del fallimento del recupero. Ora Cleanup controlla prima lo stato del cursore e preserva l'eccezione originale.
executemany() Gli errori di conversione decimale includevano i valori dei parametri
Un errore di conversione decimale in executemany() segnalava il valore incriminato tramite l'eccezione a catena, che poteva inserire i dati dei clienti nei log delle applicazioni e nei sistemi di monitoraggio. L'errore ora riporta solo l'indice delle righe, l'indice delle colonne e il tipo di valore.
Per altre informazioni, vedere Gestione degli errori.
Copia in blocco rifiutata dei tipi di Arrow View
bulkcopy_arrow() non potevano consumare array Arrow View a lunghezza variabile, quindi le colonne Polari string_view dovevano essere convertite prima con DataFrame.to_arrow() . I valori della Visualizzazione Stringa e i NULL ora passano direttamente attraverso l'Interfaccia Dati Arrow C.
Per ulteriori informazioni, vedi integrazione Polars.
Il caricamento delle estensioni Windows utilizzava l'architettura CPU host
Su Windows, il driver sceglieva la sua estensione nativa in base alla CPU host invece che all'interprete in esecuzione, così Python x64 su un host ARM64 veniva caricato tramite un percorso di riserva e scriveva notifiche su stdout. Il loader ora deriva l'architettura dall'interprete e riporta i fallback come avvisi.
mssql-python 1.13.0
Data di uscita: agosto 2026
Enhancements
I binari driver ODBC vengono assegnati solo in mssql-python-odbc
La versione 1.13.0 rimuove il libs/ fallback dalla mssql-python ruota e dichiara mssql-python-odbc==18.6.2.1 in install_requires. Il comando pip install mssql-python produce comunque un driver funzionante. Installa mssql-python-odbc esplicitamente quando installi con --no-deps, oppure da un indice privato che non lo specula.
Per altre informazioni, vedere Installazione.
Copia in blocco dalle fonti Apache Arrow
Il nuovo cursor.bulkcopy_arrow() metodo carica dati già in formato Apache Arrow, senza dover prima convertire ogni riga in oggetti Python. Passando una sorgente di Freccia a bulkcopy() ora aumenta TypeError.
Per maggiori informazioni, vedi integrazione Apache Arrow e copia in massa.
token_providerparameter for Microsoft Entra credentials
La connect() funzione e la Connection classe accettano un token_provider argomento, quindi puoi passare un oggetto credenziale come DefaultAzureCredential invece di nominare una modalità di autenticazione nella stringa di connessione. L'argomento è mutuamente esclusivo con la Authentication parola chiave e con i token passati attraverso attrs_before, e supporta solo lo scope commerciale cloud di Azure.
Per altre informazioni, vedere Autenticazione di Microsoft Entra.
Pooling di connessioni consapevole dell'identità
Il pool di connessioni ora separa le connessioni in base all'identità Microsoft Entra. Nelle versioni precedenti, il pool si registrava solo sulla stringa di connessione, così che il pool poteva consegnare una connessione autenticata come utente a una richiesta fatta da un altro. Il driver acquisisce anche un token solo quando una richiesta di connessione manca il pool, e aggiorna una connessione in pool quando il token è entro 5 minuti dalla scadenza.
Per maggiori informazioni, vedere pool di connessioni.
Correzioni dei bug
executemany() inserito zero righe quando apparivano i NULL dopo la prima riga
Una chiamata che mescolava valori numerici non-NULL e NULL inseriva righe zero e non faceva executemany() eccezioni, quando il primo NULL appariva dopo la prima riga. Questo comportamento influenzava i parametri tinyint, smallint, int e float . Il driver ora inizializza gli indicatori ODBC per ogni parametro numerico a larghezza fissa prima dell'esecuzione dell'array.
Un SQL_WVARCHAR convertitore di uscita trasformava colonne non a stringa
Registrare un convertitore a singola stringa trasformava anche i valori int, decimale e di data , perché il driver tornava al SQL_WVARCHAR convertitore per qualsiasi colonna senza un proprio convertitore. Il driver ora utilizza quel fallback solo quando il tipo Python mappato della colonna è str o bytes.
I convertitori di uscita registrati tramite codice intero di tipo SQL non sono mai stati eseguiti
I convertitori registrati con un codice intero di tipo SQL, come SQL_DECIMAL, venivano memorizzati ma mai invocati, perché il driver veniva dislocato solo sul tipo Python in cursor.description. Il driver ora invia prima il codice intero, poi il tipo Python e infine il SQL_WVARCHAR fallback.
Importante
Se registravi convertitori tramite codice SQL intero in una versione precedente, questi convertitori iniziano a funzionare quando aggiorni. Rivedili prima di implementare, perché i valori delle colonne che prima passavano inalterati ora vengono trasformati.
Per maggiori informazioni, vedi Convertitori di tipo personalizzati.
Chiudere un lettore Arrow non rilasciava il cursore lato server
Chiudendo un lettore Arrow, il cursore lato server era allocato e il genitore Cursor in uno stato incoerente, perché cursor.arrow_reader() restituiva un file grezzo pyarrow.RecordBatchReader. Il metodo ora restituisce un wrapper il cui close() metodo rilascia il cursore lato server e reimposta lo stato del cursore, e il wrapper funziona come gestore di contesto.
Per maggiori informazioni, vedi integrazione con Apache Arrow.
Un cursore parzialmente inizializzato sollevato AttributeError in Cursor.__del__
Un cursore il cui inizializzatore non funzionava sollevò un AttributeError a come eccezione non rialzabile durante la raccolta dei rifiuti.
Cursor.__init__ si è alzato prima di impostare gli closed attributi e, hstmt che __del__ poi hanno cercato di leggere. L'inizializzatore ora imposta entrambi gli attributi prima di qualsiasi codice che possa essere sollevato, e __del__ protegge la chiamata di logging in modo che rimanga sicura durante lo spegnimento dell'interprete.
mssql-python 1.12.0
Data di uscita: luglio 2026
Enhancements
Pacchetto complementare mssql-python-odbc autonomo
I binari dei driver ODBC sono ora pubblicati separatamente come mssql-python-odbc, un pacchetto companion solo dati fissato alla versione 18.6.2. Non devi cambiare alcun codice, perché pip install mssql-python installa il pacchetto companion con esso. Il loader nativo preferisce il pacchetto compagno e torna ai binari raggruppati all'interno della mssql-python ruota quando non è presente.
Per altre informazioni, vedere Installazione.
Correzioni dei bug
cursor.bulkcopy() ora utilizza il timeout di connessione della connessione padre
bulkcopy() Ora usa il timeout di connessione della sua connessione genitore, che imposti con connect(..., timeout=<seconds>). In precedenza, la connessione separata che si apre la copia in massa usava un timeout di connessione hardcoded di 15 secondi che non si poteva sovrascrivere da Python. Una connessione genitore creata con timeout=0 ottiene comunque il valore predefinito di 15 secondi.
Per ulteriori informazioni, vedi Copia in massa.
cursor.bulkcopy() supporta colonne di tipo definite dall'utente CLR
cursor.bulkcopy() in precedenza falliva Protocol Error: Unsupported TDS type for bulk copy: 0xF0 per qualsiasi colonna di destinazione che utilizzasse un tipo definito dall'utente in Common Language Runtime (CLR), inclusi i tipi integrati di geografia, geometria e hierarchid . Il driver ora mappa le colonne UDT CLR a varbinary(max) sul cavo e trasmette in streaming i byte che fornisci come payload dell'UDT IBinarySerialize . La correzione viene fornita in mssql_py_core 0.1.7.
Per maggiori informazioni, vedi Copia in massa e Mappature dei tipi di dati.
MSSQL-python 1.11.0
Data di uscita: luglio 2026
Enhancements
Semantica migliorata del gestore di contesto
with connection: ora effettua il commit della transazione quando il blocco esce pulitamente, e la riporta quando un'eccezione esce dal blocco.
Per altre informazioni, vedere Gestione delle transazioni.
Correzioni dei bug
- Corretto un deadlock del GIL nella fase di teardown di ODBC (
conn.close()ecursor.close()) e inSQLDescribeParamper i parametri con valoreNonenelle configurazioni con tunnel SSH e forwarder in-process. - Parametri fissi
BINARYeVARBINARYNULL nelle tabelle temporanee e nelle variabili della tabella. Quando la risoluzione automatica dei tipi fallisce, il driver emette un avviso Python con indicazioni esplicitecursor.setinputsizes(). - Risolto il problema di
import mssql_pythonsu Apple Silicon dopo un'installazione pulita (regressione introdotta nella versione 1.8.0). Le dipendenze incluse delle librerie dinamiche ODBC sono ora riscritte sia per l'architetturaarm64sia per l'architetturax86_64. - Corretto un deadlock GIL nel core Rust che bloccava le operazioni di copia in blocco durante l'autenticazione con
Authentication=ActiveDirectoryServicePrincipal.
mssql-python 1.10.0
Data di rilascio: giugno 2026
Enhancements
Supporto ActiveDirectoryServicePrincipal per la copia in blocco
cursor.bulkcopy() Ora supporta Authentication=ActiveDirectoryServicePrincipal, quindi puoi inserire in massa con le credenziali del principale di servizio.
Per ulteriori informazioni, vedi Copia in blocco e autenticazione Microsoft Entra.
Correzioni dei bug
- Corretti i dati non ASCII
VARCHAReCHARnel percorso di fetch di Arrow. - Risolti i timeout di connessione durante le operazioni di caricamento massivo.
MSSQL-Python 1.9.0
Data di rilascio: giugno 2026
Enhancements
Oggetti riga in copia in blocco
cursor.bulkcopy() ora accetta direttamente gli oggetti Row recuperati invece di richiedere la conversione manuale in tupla.
Per ulteriori informazioni, vedi Copia in blocco e Oggetti riga.
Correzioni dei bug
- Packaging a ruote fisse, quindi
simdutfè sempre collegato staticamente. - Sono stati sistemati inserti grandi
DECIMALinexecutemany(). - Corretto il fallback del tipo errato per i parametri NULL.
- Corretta un'eccezione nei round-trip di pickle e unpickle.
- Corretto
nextset()affinché mantengaPRINTi messaggi nei vari set di risultati. - Corretta la gestione di
Rownel percorso di fallbackexecutemany()data-at-execution. - Controllo del tipo di metodo fetch fisso per strumenti di analisi statica.
MSSQL-Python 1.8.0
Data di rilascio: maggio 2026
Enhancements
Supporto ActiveDirectoryMSI per la copia di massa
cursor.bulkcopy() ora supporta Authentication=ActiveDirectoryMSI per le identità gestite assegnate dal sistema e dall'utente.
Per ulteriori informazioni, vedi Copia in blocco e autenticazione Microsoft Entra.
Indicizzazione delle righe con chiave stringa
Ora puoi accedere ai valori delle righe per nome di colonna, ad esempio row["col"], oltre all'indicizzazione posizionale e all'accesso agli attributi.
Per maggiori informazioni, vedi Oggetti riga.
Aggiornamento del driver ODBC incluso
Il driver Microsoft ODBC per SQL Server è stato aggiornato alla versione 18.6.2.1.
Correzioni dei bug
- Corretti i problemi relativi al ciclo di vita differito degli attributi di connessione nell'autenticazione basata su token.
- Corretto il parsing ripetuto di stringa di connessione nel percorso di autenticazione.
- Annotazioni di tipo fisso
executemany()per gli ingressi di sequenza.
mssql-python 1.7.1
Data di rilascio: maggio 2026
Enhancements
Copertura delle ruote ampliata e miglioramenti delle prestazioni
Questa versione include:
- Cerchi compatibili con RHEL 8.
- Ripristinato le ruote di macOS Python 3.10
universal2. - Gestione migliorata dell'UTF-16 tramite
simdutf. - Percorso caldo ottimizzato
execute().
Impatto sulle prestazioni: la velocità di esecuzione batch migliora grazie alle ottimizzazioni del percorso caldo nel execute() metodo.
Per altre informazioni, vedere Installazione.
Correzioni dei bug
- Corretti i fallimenti di autenticazione in modo che allevassero
mssql_pythonDB-API eccezioni invece diRuntimeError. - Rilascio esteso GIL bloccando l'esecuzione, il fetch, la transazione e le chiamate agli attributi di connessione ODBC.
- Corretti i problemi
executemany()in caso di cambio di segno dei valori decimali. - Corretta la decodifica incoerente di CP1252
VARCHARsu diverse piattaforme. - Corretti i problemi
cursor.bulkcopy()relativi alle stringhe vuote nelle colonneNVARCHAR(MAX)eVARCHAR(MAX).
Note
La versione 1.7.0 è stata ritirata a causa di problemi di pubblicazione. Usa la versione 1.7.1 o successiva.
MSSQL-Python 1.6.0
Data di rilascio: aprile 2026
Enhancements
Sanitizzazione delle stringa di connessione basata su parser
La sanitizzazione delle stringhe di connessione ora utilizza un parser invece delle espressioni regolari, quindi le stringhe di connessione che contengono caratteri speciali nei campi delle password e i valori con bracciato analizzano correttamente.
Per altre informazioni, vedere Stringhe di connessione.
Correzioni dei bug
- Rilascio GIL corretto durante il blocco delle operazioni di connessione e disconnessione ODBC.
- Risolti i crash con
setinputsizes()che si verificavano con i suggerimentiSQL_DECIMALeSQL_NUMERIC. - Corretto il comportamento errato di
fetchone()nei metodi del catalogo ODBC. - Corretti gli errori di stato non valido del cursore quando
reset_cursor=Falseviene usato. - Suggerimenti di tipo fisso
executemany()per sequenze di parametri basate sulla mappatura. - Aggiunta una guardia per l'attraversamento del percorso per
setup_logging(log_file_path=...).
MSSQL-Python 1.5.0
Data di rilascio: aprile 2026
Nuove funzionalità
Supporto per il fetch di Apache Arrow
Tre nuovi metodi di cursore offrono il recupero di dati columnari ad alte prestazioni tramite l'Interfaccia Dati Arrow C:
-
cursor.arrow()restituisce unpyarrow.Tablecompleto. -
cursor.arrow_batch()restituisce un singolopyarrow.RecordBatch. -
cursor.arrow_reader()restituisce unpyarrow.RecordBatchReaderper lo streaming.
Questi metodi non creano un oggetto Python per ogni valore. Per la documentazione completa, vedi integrazione con Apache Arrow.
supporto per il tipo sql_variant
Il driver ora rileva sql_variant le colonne al momento del recupero, ne risolve il tipo base sottostante e restituisce valori Python correttamente tipizzati invece dei byte grezzi.
Note
sql_variant Le colonne utilizzano un percorso di recupero in streaming, che potrebbe avere un leggero impatto sulle prestazioni rispetto alle colonne di tipo fisso.
Per altre informazioni, vedere Mapping dei tipi di dati.
Supporto UUID nativo
Una nuova native_uuid impostazione determina se UNIQUEIDENTIFIER le colonne vengono restituite come uuid.UUID oggetti (predefinito) o come stringhe maiuscole compatibili con pyodbc. Configuralo a livello di modulo o per connessione.
Per ulteriori informazioni, vedi Configurazione dei moduli.
Esportazione pubblica della classe a file
La Row classe viene ora esportata al livello superiore per le annotazioni di tipo.
Per maggiori informazioni, vedi Oggetti riga.
Correzioni dei bug
- Corretto il rilevamento dei falsi positivi
?all'interno di identificatori tra parentesi, letterali stringa e commenti. - Corretto il binding dei parametri NULL per le colonne
VARBINARY(non genera più errori di conversione implicita). - Valori fissi
datetime.timeche perdono microsecondi nei viaggi di andata e ritorno perTIME(1)colonne di passaggioTIME(7). - Ho corretto il percorso di recupero delle frecce per includere correttamente le frazioni di secondo per
TIMEle colonne. - Corretta la copia in blocco relativa ai metodi di autenticazione di Microsoft Entra ID (i campi delle credenziali obsoleti non causano più errori di convalida).
- Istanze di credenziali Azure Identity memorizzate nella cache a livello di modulo per migliorare le prestazioni di autenticazione.
MSSQL-Python 1.4.0
Data di uscita: febbraio 2026
Nuove funzionalità
Supporto per la copia di massa
Il caricamento di dati ad alte prestazioni è ora disponibile tramite cursor.bulkcopy(). Il metodo accetta opzioni per batch_size, timeout, column_mappings, keep_identity, check_constraintstable_lock, keep_nulls, , fire_triggers, e use_internal_transaction.
Per ulteriori informazioni, vedi Copia in massa.
Improvements
- Ottimizzazioni delle prestazioni per grandi set di risultati.
- Riduzione dell'uso di memoria durante le operazioni batch.
- Messaggi di errore migliorati per fallimenti di copia in massa.
MSSQL-Python 1.3.0
Data di uscita: gennaio 2026
Nuove funzionalità
Classe di ambientazione
Configurare il comportamento a livello di modulo tramite la nuova Settings classe, che include l'impostazione lowercase per i nomi delle colonne in cursor.description.
Per ulteriori informazioni, vedi Configurazione dei moduli.
Improvements
- Gestione migliore del timeout della connessione durante il failover Azure SQL.
- Compatibilità migliorata con Python 3.13.
MSSQL-Python 1.2.0
Data di uscita: gennaio 2026
Nuove funzionalità
Metodi di scoperta dello schema
Nuovi metodi a cursore esplorano i metadati del database: tables(), columns(), primaryKeys(), foreignKeys(), procedures(), statistics(), e getTypeInfo().
Per ulteriori informazioni, vedi Scoperta dello schema.
Improvements
- Cache dei metadati migliorata per le query ripetute dello schema.
- Migliore gestione delle colonne calcolate nei
columns()risultati.
MSSQL-python 1.1.0
Data di uscita: dicembre 2025
Nuove funzionalità
Convertitori di uscita personalizzati
Registrare funzioni personalizzate per trasformare i valori delle colonne durante il fetch, con add_output_converter(), get_output_converter(), remove_output_converter(), e clear_output_converters().
Per maggiori informazioni, vedi Convertitori di tipo personalizzati.
Improvements
- Messaggi di errore migliori in caso di errore nella conversione del tipo.
- Supporto per funzioni convertitrici che restituiscono
None.
MSSQL-Python 1.0.0
Data di uscita: novembre 2025
Versione iniziale GA
La prima versione di disponibilità generale di mssql-python, il driver Python nativo di Microsoft per SQL Server.
Per maggiori informazioni, vedi driver mssql-python.
Funzionalità di base
- Architettura DDBC: Connettività diretta al database senza richiedere l'installazione di driver ODBC.
- Conformità a DB-API 2.0: interfaccia standard per database di Python.
- Pool di connessioni: gestione integrata del pool di connessioni.
- Autenticazione Microsoft Entra: Supporto completo per l'autenticazione basata sull'identità di Azure.
- Crittografia TLS: Connessioni sicure con validazione dei certificati.
Caratteristiche di connessione
- 21 parole chiave della stringa di connessione.
- 9 modalità di autenticazione (SQL, Windows e 7 metodi Microsoft Entra ID).
- Controllo dell'autocommit.
- Metodi di esecuzione:
execute(),executemany(), ebatch_execute(). - Attributi di connessione attraverso
set_attr()egetinfo(). - Supporto per il gestore di contesto.
Caratteristiche del cursore
- Metodi standard di riporto:
fetchone(),fetchmany(),fetchall(). - Metodi estesi:
fetchval(),skip(). - Metodi di esecuzione:
execute()eexecutemany(). - Oggetti di riga con accesso tramite attributi e indici.
- Navigazione tra set di risultati multipli con
nextset().
Supporto dei tipi di dati
- Tutti tipi nativi di SQL Server.
- Mappature dei tipi Python↔SQL.
- Costanti di tipo SQL per tipizzazione esplicita (ad esempio,
mssql_python.SQL_DECIMAL). - Gestione di NULL in Python
None.
Supporto delle transazioni
- Commit e rollback manuali.
- Modalità auto-commit.
- Controllo del livello di isolamento.
- Rilevamento e gestione dei deadlock.
Modalità di autenticazione
| Mode | Descrizione |
|---|---|
| Autenticazione di SQL Server | Nome utente e password |
| Autenticazione di Windows | Trusted_Connection |
| ActiveDirectoryDefault | DefaultAzureCredential |
| ActiveDirectoryInteractive | Accesso tramite browser |
| ActiveDirectoryDeviceCode | Flusso del codice del dispositivo |
| ActiveDirectoryPassword | Nome utente e password di Microsoft Entra (deprecati; usa ROPC) |
| ActiveDirectoryMSI | Identità gestita |
| ActiveDirectoryServicePrincipal | Service Principal |
| ActiveDirectoryIntegrated | Windows Kerberos |
Upgrade
Da pyodbc
Per linee guida dettagliate sulla migrazione, vedi Migrate from pyodbc.
Differenze principali:
- Sono supportati entrambi gli stili di parametri:
?(qmark) e%(name)s(pyformat). Le tue query esistenti?funzionano senza cambiamenti. - Nessun metodo
callproc(). Usa invece le istruzioniEXECUTE. - Pooling di connessione integrato.
- Nessuna dipendenza da driver ODBC esterni.
Da pymssql
Per indicazioni dettagliate sulla migrazione, vedi Migrate from pymssql.
Differenze principali:
- Sostituire i marcatori di parametro
%se%dcon?o%(name)s. - Usa una stringa di connessione invece degli argomenti posizionali.
- Nessuna dipendenza da FreeTDS.
- Più cursori concorrenti per connessione.
- Gli oggetti riga con accesso agli attributi sostituiscono
as_dict=True.
Tra le versioni di mssql-python
Aggiorna il driver per ottenere nuove funzionalità e correzioni.
pip install --upgrade mssql-python
Controlla le note di rilascio per eventuali cambiamenti improvvisi prima di aggiornare i sistemi di produzione.
Roadmap
Per le prossime funzionalità e la roadmap di sviluppo, consulta il repository GitHub.