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 listar vad som ändrats i varje version av mssql-python-drivrutinen, det senaste först. Varje avsnitt täcker nya funktioner, beteendeförändringar och buggfixar för en version.
För de versioner som Microsoft för närvarande stödjer, se Supportlivscykel.
mssql-python 1.14.0
Releasedatum: augusti 2026
Enhancements
Parameterdetektering och bindning körs i inbyggd kod
Parametertypsdetektion och bindning körs nu i en enda inbyggd pipeline istället för Python-anrop per parameter. Denna ändring åtgärdar en betydande prestandaflaskhals och ger större förbättringar i genomströmning från början till slut, särskilt i större operationer som massinfogningar. Ingen ändring av ansökan behövs.
Felkorrigeringar
Argumentet timeout att connect() sätta frågetidsavbrottet istället för autentiseringstidsavbrottet
Argumentet timeout sätter SQL_ATTR_LOGIN_TIMEOUT och begränsar nu autentiseringsförsöket, vilket är vad argumentets namn och dokumentationen beskriver. I tidigare versioner blev det tidsgränsen för varje enskild fråga, så connect(timeout=30) begränsade inte hur länge ett anslutningsförsök fick pågå, och avbröt frågor efter 30 sekunder. Tidsgränsen för varje fråga är fortfarande tillgänglig som egenskapen Connection.timeout.
Important
Om du skickade timeout till connect() för att avbryta långkörande frågor sker det inte längre. Ställ in Connection.timeout i stället. Detsamma gäller om du förlitar dig på connect(timeout=) för att öka tidsgränsen för anslutning som bulkcopy() använder för sin interna anslutning: ange Connection.timeout innan du skapar markören.
Mer information finns i Tidsgräns för anslutning.
bulkcopy() Avvisad timeout=0
Ett timeout på 0 orsakade ett valideringsfel, trots att 0 innebär ingen timeout i det underliggande API:et för bulkkopiering. Metoden accepterar 0 nu och inaktiverar timeouten för operationen. Negativa, icke-heltals- och boolesiska värden avvisas fortfarande.
För mer information, se Bulkkopia.
Upprensningen ersatte det ursprungliga hämtningsundantaget för Arrow
När en hämtning från en Arrow-läsare misslyckades, gav drivrutinens rensningsväg ett andra fel som ersatte det ursprungliga, så anroparna såg ett saneringsfel istället för anledningen till att hämtningen misslyckades. Cleanup kontrollerar nu markörens tillstånd först och bevarar det ursprungliga undantaget.
executemany() Fel vid decimalomvandling inkluderade parametervärden
Ett decimal-konverteringsfel i executemany() rapporterade det utlösande värdet via det kedjade undantaget, vilket kunde leda till att kunddata hamnade i applikationsloggar och övervakningssystem. Felet rapporterar nu endast radindexet, kolumnindexet och värdetypen.
Mer information finns i Felhantering.
Masskopiering av avvisade Arrow View-typer
bulkcopy_arrow() kunde inte hantera Arrow View-arrayer med variabel längd, så Polars-kolumner string_view var tvungna att först konverteras med DataFrame.to_arrow(). String View-värden och NULLs går nu direkt genom Arrow C Data Interface.
För mer information, se Polars-integration.
Inläsning av Windows-tillägg använde värddatorns CPU-arkitektur
I Windows valde drivrutinen vilket inbyggt tillägg som skulle användas utifrån värd-CPU:n i stället för den tolk som kördes, så x64-Python på en ARM64-värd lästes in via en reservlösning och skrev meddelanden till stdout. Laddaren härleder nu arkitekturen från tolken och rapporterar reservlösningar som varningar.
mssql-python 1.13.0
Releasedatum: augusti 2026
Enhancements
Binärfilerna för ODBC-drivrutinen levereras endast i mssql-python-odbc
Version 1.13.0 tar bort fallbacken libs/ från hjulet mssql-python och deklarerar mssql-python-odbc==18.6.2.1 i install_requires. Kommandot pip install mssql-python ger fortfarande en fungerande drivrutin. Installera mssql-python-odbc uttryckligen när du installerar med --no-deps, eller från ett privat index som inte speglar det.
Mer information finns i Installation.
Masskopia från Apache Arrow-källor
Den nya cursor.bulkcopy_arrow() metoden laddar data som redan är i Apache Arrow-format, utan att först konvertera varje rad till Python-objekt. Att passera en Arrow-källa till bulkcopy() ger nu TypeError.
För mer information, se Apache Arrow-integration och Bulk copy.
token_providerparameter för Microsoft Entra-inloggningsuppgifter
Funktionen connect() och klassen Connection accepterar ett argument av typen token_provider, så du kan skicka ett autentiseringsobjekt såsom DefaultAzureCredential i stället för att ange en autentiseringsmetod i anslutningssträngen. Argumentet kan inte användas tillsammans med nyckelordet Authentication eller med token som skickas via attrs_before, och det har stöd endast för Azure Commercial-molnomfånget.
Mer information finns i Microsoft Entra-autentisering.
Identitetsbaserad kopplingspoolning
Anslutningspoolen separerar nu anslutningar efter Microsoft Entra-identitet. I tidigare versioner baserades poolen enbart på anslutningssträngen, så poolen kunde tilldela en anslutning som var autentiserad som en användare till en begäran från en annan användare. Drivrutinen hämtar också en token endast när en anslutningsbegäran inte kan tas från poolen, och förnyar en poolad anslutning när dess token har mindre än 5 minuter kvar innan den går ut.
Mer information finns i Anslutningspooler.
Felkorrigeringar
executemany() infogade noll rader när NULLs dök upp efter första raden
Ett anrop till executemany() som blandade numeriska värden som inte var NULL med NULL-värden infogade noll rader och utlöste inget undantag när det första NULL-värdet förekom efter den första raden. Detta beteende påverkade tinyint, smallint, int- och float-parametrar . Drivrutinen initierar nu ODBC-indikatorer för varje numerisk parameter med fast bredd innan array-exekveringen.
En SQL_WVARCHAR utgångsomformere omvandlade icke-strängkolumner
Att registrera en enda strängkonverterare omvandlade också värden av typen int, decimal och date, eftersom drivrutinen använde konverteraren SQL_WVARCHAR som reserv för alla kolumner som saknade en egen konverterare. Drivrutinen använder nu den fallbacken endast när kolumnens mappade Python-typ är str eller bytes.
Utdataomvandlare registrerade med heltalskod av SQL-typ kördes aldrig
Konverterare som registrerats med en heltalskod för SQL-typ, till exempel SQL_DECIMAL, lagrades men anropades aldrig, eftersom drivrutinen endast utgick från Python-typen i cursor.description. Drivrutinen skickar nu på heltalskoden först, sedan Python-typen och därefter SQL_WVARCHAR reservkoden.
Important
Om du registrerade konverterare med heltalskod i SQL-typ i en tidigare version, börjar dessa konverterare köras när du uppgraderar. Granska dem innan du distribuerar, eftersom kolumnvärden som tidigare passerat oförändrade nu är transformerade.
För mer information, se Anpassade typomvandlare.
När en Arrow-läsare stängdes frigjordes inte markören på serversidan
Att stänga en Arrow-läsare lämnade den serversidesmarkören allokerad och det överordnade Cursor i ett inkonsekvent tillstånd, eftersom cursor.arrow_reader() returnerade ett rått pyarrow.RecordBatchReader. Metoden returnerar nu en wrapper vars close() metod släpper serversidans markör och återställer markörens tillstånd, och wrappern fungerar som en kontexthanterare.
För mer information, se Apache Arrow-integration.
En delvis initialiserad markör utlöste AttributeError i Cursor.__del__
En pekare vars initiering misslyckades utlöste ett AttributeError som ett icke-utlösbart undantag under skräpsamling.
Cursor.__init__ utlöstes innan den satte attributen hstmt och closed, som __del__ sedan försökte läsa. Initializern sätter nu båda attributen före all kod som kan tas upp, och __del__ skyddar dess loggningsanrop så att det förblir säkert under tolkens avstängning.
mssql-python 1.12.0
Releasedatum: juli 2026
Enhancements
Fristående mssql-python-odbc följeslagarpaket
ODBC-drivrutinsbinärerna publiceras nu separat som mssql-python-odbc, ett data-endast följeslagarpaket som är fäst på version 18.6.2. Du behöver inte ändra någon kod, eftersom pip install mssql-python installerar det kompletterande paketet tillsammans med det. Den inbyggda inläsaren föredrar det medföljande paketet och använder i annat fall binärfilerna som medföljer i mssql-python-hjulet.
Mer information finns i Installation.
Felkorrigeringar
cursor.bulkcopy() använder nu föräldraanslutningens anslutningstimeout
bulkcopy() använder nu tidsgränsen för anslutning för den överordnade anslutningen, som du anger med connect(..., timeout=<seconds>). Tidigare använde den separata anslutningen som bulkkopiering öppnar en hårdkodad 15-sekunders anslutningstidsavslutning som du inte kunde åsidosätta från Python. En överordnad anslutning som skapas med timeout=0 får fortfarande standardvärdet 15 sekunder.
För mer information, se Bulkkopia.
cursor.bulkcopy() stöder CLR-användardefinierade typkolumner
cursor.bulkcopy() misslyckades tidigare med Protocol Error: Unsupported TDS type for bulk copy: 0xF0 för alla destinationskolumner som använde en CLR-användardefinierad typ, inklusive de inbyggda typerna geography, geometry och hierarchyid. Drivrutinen mappar nu CLR UDT-kolumner till varbinary(max) på kabeln och strömmar de bytes du tillhandahåller som UDT:ns IBinarySerialize payload. Korrigeringen ingår i mssql_py_core 0.1.7.
För mer information, se Masskopiering och Datatypmappningar.
mssql-python 1.11.0
Releasedatum: juli 2026
Enhancements
Förbättrad semantik för kontexthanterare
with connection: genomför nu transaktionen när blocket avslutas utan fel och rullar tillbaka den när ett undantag avslutar blocket.
Mer information finns i Transaktionshantering.
Felkorrigeringar
- Åtgärdade en GIL-deadlock i ODBC:s avvecklingsväg (
conn.close()ochcursor.close()) och iSQLDescribeParamför parametrar med värdetNonei konfigurationer med SSH-tunnel och vidarebefordrare i processen. - Fasta
BINARYochVARBINARYNULL-parametrar i temporära tabeller och tabellvariabler. När automatisk typupplösning misslyckas genererar drivrutinen nu en varning i Python med tydligcursor.setinputsizes()vägledning. - Fixade
import mssql_pythonfel på Apple Silicon med en ren installation (regression i 1.8.0). De medföljande ODBC-dylib-beroendena har nu skrivits om för bådearm64- ochx86_64-arkitekturer. - Åtgärdade en GIL-deadlock i Rust-kärnan som gjorde att bulkkopieringsåtgärder låste sig vid autentisering med
Authentication=ActiveDirectoryServicePrincipal.
mssql-python 1.10.0
Utgivningsdatum: juni 2026
Enhancements
ActiveDirectoryServicePrincipal-stöd för masskopiering
cursor.bulkcopy() stöder nu Authentication=ActiveDirectoryServicePrincipal, så att du kan massinfoga med autentiseringsuppgifter för tjänstens huvudnamn.
För mer information, se Bulk copy och Microsoft Entra authentication.
Felkorrigeringar
- Åtgärdade data som inte är i ASCII-format för
VARCHARochCHARi Arrow-hämtningssökvägen. - Fasta anslutningstidsavbrott under bulklast.
mssql-python 1.9.0
Utgivningsdatum: juni 2026
Enhancements
Radobjekt i bulk-kopiering
cursor.bulkcopy() accepterar nu hämtade Row objekt direkt istället för att kräva manuell tuplekonvertering.
För mer information, se Bulk copy och Row objects.
Felkorrigeringar
- Fast hjulpaketering så
simdutfdet är alltid statiskt kopplat. - Åtgärdade stora
DECIMALinfogningar iexecutemany(). - Fixade felaktig typ av fallback för NULL-parametrar.
- Fixade undantag för pickle och av-pickle tur-och-retur.
- Åtgärdat
nextset()så att det behållerPRINTmeddelanden mellan resultatuppsättningar. - Åtgärdade hanteringen av
Rowi reservvägen för data-at-execution iexecutemany(). - Åtgärdade typkontrollen för fetch-metoden för statiska analysverktyg.
mssql-python 1.8.0
Utgivningsdatum: maj 2026
Enhancements
ActiveDirectoryMSI-stöd för masskopiering
cursor.bulkcopy() stöder Authentication=ActiveDirectoryMSI nu systemtilldelade och användartilldelade hanterade identiteter.
För mer information, se Bulk copy och Microsoft Entra authentication.
Indexering med strängnyckel för rad
Du kan nu komma åt radvärden efter kolumnnamn, till exempel row["col"], utöver positionsindexering och attributåtkomst.
För mer information, se Radobjekt.
Medföljande ODBC-drivrutinsuppgradering
Den medföljande Microsoft ODBC-drivrutinen för SQL Server uppdaterades till 18.6.2.1.
Felkorrigeringar
- Åtgärdade problem med livslängden för fördröjda connect-attribut i tokenbaserad autentisering.
- Åtgärdade upprepad tolkning av anslutningssträngen i autentiseringsflödet.
- Fasta
executemany()typannoteringar för sekvensindata.
mssql-python 1.7.1
Utgivningsdatum: maj 2026
Enhancements
Utökad hjultäckning och prestandaförbättringar
I den här versionen ingår:
- RHEL 8-kompatibla hjul.
- Återställda macOS Python 3.10-hjul
universal2 - Förbättrad hantering av UTF-16 genom
simdutf. - Optimerad
execute()varm väg.
Prestandapåverkan: Batchkörningsgenomströmningen förbättras tack vare hot path-optimeringar i metoden execute() .
Mer information finns i Installation.
Felkorrigeringar
- Åtgärdade autentiseringsfel så att de ger upphov till
mssql_pythonDB-API-undantag i stället förRuntimeError. - Utökad GIL-frigivning vid blockerande ODBC-anrop för körning, hämtning, transaktioner och anslutningsattribut.
- Åtgärdade fel med
executemany()när decimalvärden byter tecken. - Åtgärdade inkonsekvent avkodning av CP1252
VARCHARmellan plattformar. - Åtgärdade
cursor.bulkcopy()fel för tomma strängar iNVARCHAR(MAX)ochVARCHAR(MAX)kolumner.
Note
Version 1.7.0 drogs tillbaka på grund av publiceringsproblem. Använd version 1.7.1 eller senare.
mssql-python 1.6.0
Utgivningsdatum: april 2026
Enhancements
Parserbaserad rensning av anslutningssträng
Sanering av anslutningssträngar använder nu en parser istället för reguljära uttryck, så anslutningssträngar som innehåller specialtecken i lösenordsfält och förstärkta värden parsas korrekt.
Mer information finns i Anslutningssträngar.
Felkorrigeringar
- Åtgärdade GIL-frigörelse vid blockerande ODBC-anslutnings- och frånkopplingsåtgärder.
- Fixade
setinputsizes()krascher medSQL_DECIMALochSQL_NUMERICledtrådar. - Korrigerade felaktigt
fetchone()beteende för ODBC-katalogmetoder. - Åtgärdade fel med ogiltigt markörtillstånd när
reset_cursor=Falseanvändes. - Fasta
executemany()typ-ledtrådar för mappningsbaserade parametersekvenser. - La till ett skydd mot sökvägstraversering för
setup_logging(log_file_path=...).
mssql-python 1.5.0
Utgivningsdatum: april 2026
Nya funktioner
Stöd för hämtning med Apache Arrow
Tre nya cursormetoder erbjuder högpresterande hämtning av kolumnbaserad data genom Arrow C Data Interface:
-
cursor.arrow()returnerar ett komplettpyarrow.Table. -
cursor.arrow_batch()returnerar en endapyarrow.RecordBatch. -
cursor.arrow_reader()returnerar enpyarrow.RecordBatchReaderför strömning.
Dessa metoder skapar inte ett Python-objekt för varje värde. För fullständig dokumentation, se Apache Arrow-integration.
stöd för typen sql_variant
Drivrutinen upptäcker nu sql_variant kolumner vid hämtning, fastställer deras underliggande bastyp och returnerar korrekt typade Python-värden i stället för råa byte.
Note
sql_variant Kolumner använder en strömmande hämtaväg, vilket kan ha en liten prestandapåverkan jämfört med kolumner av fast typ.
Mer information finns i Datatypsmappningar.
Inbyggt UUID-stöd
En ny native_uuid-inställning styr om kolumnerna UNIQUEIDENTIFIER returneras som uuid.UUID-objekt (standard) eller som pyodbc-kompatibla strängar med versaler. Konfigurera det på modulnivå eller per anslutning.
För mer information, se Modulkonfiguration.
Radklass offentlig export
Klassen Row exporteras nu på högsta nivå för typannotationer.
För mer information, se Radobjekt.
Felkorrigeringar
- Åtgärdade felaktig identifiering av
?i hakparentesomslutna identifierare, strängliteraler och kommentarer. - Fixerad NULL-parameterbindning för
VARBINARYkolumner (ger inte längre implicita konverteringsfel). - Åtgärdade att
datetime.time-värden förlorade mikrosekunder vid tur- och returkonvertering för kolumner frånTIME(1)tillTIME(7). - Åtgärdade hämtningsvägen för Arrow så att den korrekt inkluderar sekundbråkdelar i
TIME-kolumner. - Fixad bulkkopiering med autentiseringsmetoder för Microsoft Entra ID (föråldrade inloggningsfält orsakar inte längre valideringsfel).
- Cachade Azure Identity-inloggningsinstanser på modulnivå för förbättrad autentiseringsprestanda.
mssql-python 1.4.0
Releasedatum: februari 2026
Nya funktioner
Stöd för masskopiering
Högpresterande bulkdataladdning finns nu tillgänglig via cursor.bulkcopy(). Metoden accepterar alternativ för batch_size, , , timeout, column_mappings, keep_identity, check_constraintstable_lock, , keep_nulls, och fire_triggersuse_internal_transaction.
För mer information, se Bulkkopia.
Improvements
- Prestandaoptimeringar för stora resultatmängder.
- Minskad minnesanvändning under batchoperationer.
- Förbättrade felmeddelanden för bulkkopieringsfel.
mssql-python 1.3.0
Releasedatum: januari 2026
Nya funktioner
Inställningsklass
Konfigurera modulomfattande beteende via den nya Settings klassen, som inkluderar inställningen lowercase för kolumnnamn i cursor.description.
För mer information, se Modulkonfiguration.
Improvements
- Bättre hantering av anslutningstidsavbrott under Azure SQL-failover.
- Förbättrad kompatibilitet med Python 3.13.
mssql-python 1.2.0
Releasedatum: januari 2026
Nya funktioner
Metoder för schemaupptäckt
Nya markörmetoder utforskar databasmetadata: tables(), columns(), , primaryKeys(), procedures()foreignKeys(), , statistics()och getTypeInfo().
För mer information, se Schema discovery.
Improvements
- Förbättrad metadatacache för upprepade schemafrågor.
- Bättre hantering av beräknade kolumner i
columns()resultat.
mssql-python 1.1.0
Utgivningsdatum: december 2025
Nya funktioner
Specialanpassade utgångsomformere
Registrera anpassade funktioner för att transformera kolumnvärden under hämtning, med add_output_converter(), get_output_converter(), , remove_output_converter()och clear_output_converters().
För mer information, se Anpassade typomvandlare.
Improvements
- Bättre felmeddelanden vid misslyckade typkonverteringar.
- Stöd för omvandlarfunktioner som returnerar
None.
mssql-python 1.0.0
Releasedatum: november 2025
Första GA-versionen
Den första allmänna tillgänglighetsversionen av mssql-python, Microsoft inbyggda Python-drivrutin för SQL Server.
För mer information, se mssql-python-drivrutinen.
Kärnfunktioner
- DDBC-arkitektur: Direkt databasanslutning utan att behöva installera ODBC-drivrutiner.
- DB-API 2.0-efterlevnad: Standard Python databasgränssnitt.
- Anslutningspoolning: Inbyggd anslutningspoolhantering.
- Microsoft Entra-autentisering: Fullt stöd för Azure-identitetsbaserad autentisering.
- TLS-kryptering: Säkra anslutningar med certifikatvalidering.
Anslutningsfunktioner
- 21 nyckelord för anslutningssträngar.
- 9 autentiseringsläge (SQL, Windows och 7 Microsoft Entra ID-metoder).
- Styrning av autocommit.
- Exekveringsmetoder:
execute(),executemany(), ochbatch_execute(). - Kopplingsattribut genom
set_attr()ochgetinfo(). - Stöd för kontexthanterare.
Markörfunktioner
- Standardmetoder för hämtning:
fetchone(),fetchmany(),fetchall(). - Utökade metoder:
fetchval(),skip(). - Exekveringsmetoder:
execute()ochexecutemany(). - Radobjekt med attribut- och indexåtkomst.
- Navigering med flera resultatuppsättningar med
nextset().
Stöd för datatyp
- Alla inbyggda typer i SQL Server.
- Python↔SQL-typmappningar.
- SQL-typkonstanter för explicit typning (till exempel
mssql_python.SQL_DECIMAL). - NULL-hantering i Python
None.
Transaktionsstöd
- Manuell incheckning och återställning.
- Autocommit-läge.
- Isoleringsnivåkontroll.
- Upptäckt och hantering av deadlock.
Autentiseringslägen
| Mode | Beskrivning |
|---|---|
| SQL Server-autentisering | Användarnamn och lösenord |
| Windows authentication | Trusted_Connection |
| ActiveDirectoryDefault | DefaultAzureCredential |
| ActiveDirectoryInteractive | Webbläsarbaserad inloggning |
| ActiveDirectoryDeviceCode | Enhetskodflöde |
| ActiveDirectoryPassword | Microsoft Entra användarnamn och lösenord (föråldrat; använder ROPC) |
| ActiveDirectoryMSI | Hanterad identitet |
| ActiveDirectoryServicePrincipal | Service Principal |
| ActiveDirectoryIntegrated | Windows Kerberos |
Upgrade
Från pyodbc
För detaljerad migrationsvägledning, se Migrera från pyodbc.
Viktiga skillnader:
- Både
?(qmark) och%(name)s(pyformat) parameterstilar stöds. Dina befintliga?frågor fungerar utan ändringar. - Ingen
callproc()metod. AnvändEXECUTE-satser i stället. - Inbyggd anslutningspooling.
- Inget beroende av extern ODBC-drivrutin.
Från pymssql
För detaljerad migreringsguidning, se Migrera från pymssql.
Viktiga skillnader:
- Byt ut
%soch%dparametermarkörer med?eller%(name)s. - Använd en reťazec pripojenia istället för positionsargument.
- Inget FreeTDS-beroende.
- Flera samtidiga markörer per anslutning.
- Radobjekt med attributåtkomst ersätter
as_dict=True.
Mellan versioner av mssql-python
Uppgradera drivrutinen för att få nya funktioner och fixar.
pip install --upgrade mssql-python
Kolla versionsnoterna för eventuella brytande ändringar innan du uppgraderar produktionssystemen.
Roadmap
För kommande funktioner och utvecklingsplanen, se GitHub-arkivet.