Vad är nytt i mssql-python

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 timeout0 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() och cursor.close()) och i SQLDescribeParam för parametrar med värdet None i konfigurationer med SSH-tunnel och vidarebefordrare i processen.
  • Fasta BINARY och VARBINARY NULL-parametrar i temporära tabeller och tabellvariabler. När automatisk typupplösning misslyckas genererar drivrutinen nu en varning i Python med tydlig cursor.setinputsizes() vägledning.
  • Fixade import mssql_python fel 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åde arm64- och x86_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 VARCHAR och CHAR i 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å simdutf det är alltid statiskt kopplat.
  • Åtgärdade stora DECIMAL infogningar i executemany().
  • 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åller PRINT meddelanden mellan resultatuppsättningar.
  • Åtgärdade hanteringen av Row i reservvägen för data-at-execution i executemany().
  • Å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_python DB-API-undantag i stället för RuntimeError.
  • 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 VARCHAR mellan plattformar.
  • Åtgärdade cursor.bulkcopy() fel för tomma strängar i NVARCHAR(MAX) och VARCHAR(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 med SQL_DECIMAL och SQL_NUMERIC ledtrådar.
  • Korrigerade felaktigt fetchone() beteende för ODBC-katalogmetoder.
  • Åtgärdade fel med ogiltigt markörtillstånd när reset_cursor=False anvä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 komplett pyarrow.Table.
  • cursor.arrow_batch() returnerar en enda pyarrow.RecordBatch.
  • cursor.arrow_reader() returnerar en pyarrow.RecordBatchReader fö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 VARBINARY kolumner (ger inte längre implicita konverteringsfel).
  • Åtgärdade att datetime.time-värden förlorade mikrosekunder vid tur- och returkonvertering för kolumner från TIME(1) till TIME(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(), och batch_execute().
  • Kopplingsattribut genom set_attr() och getinfo().
  • Stöd för kontexthanterare.

Markörfunktioner

  • Standardmetoder för hämtning: fetchone(), fetchmany(), fetchall().
  • Utökade metoder: fetchval(), skip().
  • Exekveringsmetoder: execute() och executemany().
  • 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änd EXECUTE-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 %s och %d parametermarkö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.