Co je nového v mssql-python

Tento článek uvádí, co se změnilo v každém vydání ovladače mssql-python, nejprve nejnovější informace. Každá sekce pokrývá nové funkce, změny chování a opravy chyb u jedné verze.

Pro verze, které Microsoft aktuálně podporuje, viz životní cyklus podpory.

mssql-python 1.14.0

Datum vydání: srpen 2026

Enhancements

Detekce parametrů a vazby běží v nativním kódu

Detekce typů parametrů a vazby nyní běží v jednom nativním potrubí místo volání Python podle parametrů. Tato změna odstraňuje významné omezení výkonu a přináší výraznější zvýšení propustnosti v celém procesu u větších operací, jako je hromadné vkládání. Není potřeba žádná změna přihlášky.

Opravy chyb

Argument timeout pro connect() nastavil časový limit dotazu místo časového limitu ověřování

Argument timeout nyní nastavuje SQL_ATTR_LOGIN_TIMEOUT a omezuje autentizační pokus, což je přesně to, co popisuje název argumentu a dokumentace. V dřívějších verzích se z toho stal časový limit pro jednotlivé příkazy, takže connect(timeout=30) neomezovalo, jak dlouho mohl pokus o připojení trvat, a ukončovalo dotazy po 30 sekundách. Časový limit dotazu na jednotlivé výkazy zůstává dostupný jako vlastnost Connection.timeout .

Důležité

Pokud jste předali timeout do connect(), aby se přerušily dlouhotrvající dotazy, k tomu už nedochází. Místo toho nastavte Connection.timeout. Totéž platí, pokud jste se spoléhali na connect(timeout=) k prodloužení časového limitu připojení, který bulkcopy() používá pro své interní připojení: nastavte Connection.timeout před vytvořením kurzoru.

Pro více informací viz Časový limit připojení.

bulkcopy() Odmítnut timeout=0

Hodnota timeout0 vyvolala chybu ověření, i když 0 v podkladovém rozhraní API pro hromadné kopírování znamená, že není nastaven žádný časový limit. Metoda nyní přijímá 0 a deaktivuje časový limit operace. Záporné, neceločíselné a booleovské hodnoty jsou stále odmítány.

Další informace najdete v části Hromadné kopírování.

Vyčištění nahradilo původní výjimku při načítání Arrow.

Když nedošlo k načtení z čtečky Arrow, cesta k čištění ovladače vyvolala druhou chybu, která nahradila původní, takže volající viděli neúspěch čištění místo důvodu, proč nedošlo k načítání. Čištění nyní nejprve kontroluje stav kurzoru a zachovává původní výjimku.

executemany() Chyby při převodu desetinných čísel zahrnovaly hodnoty parametrů

Selhání executemany() převodu v desetinné fázi hlásilo problematickou hodnotu prostřednictvím řetězené výjimky, která mohla umístit zákaznická data do aplikačních logů a monitorovacích systémů. Chyba nyní uvádí pouze index řádku, sloupcový index a typ hodnoty.

Další informace naleznete v tématu Zpracování chyb.

Hromadné kopírování bylo pro typy zobrazení Arrow odmítnuto

bulkcopy_arrow() neuměl zpracovat pole Arrow View s proměnlivou délkou, takže sloupce Polars string_view bylo nejprve nutné převést pomocí DataFrame.to_arrow(). Hodnoty StringView a hodnoty NULL se nyní předávají přímo přes rozhraní Arrow C Data Interface.

Pro více informací viz integrace Polars.

Načítání rozšíření Windows využívalo architekturu hostitelského CPU

V systému Windows ovladač vybíral své nativní rozšíření podle CPU hostitele namísto právě spuštěného interpretu, takže se x64 Python na hostiteli ARM64 načítal pomocí náhradní cesty a vypisoval hlášení na standardní výstup. Loader nyní určuje architekturu podle interpretu příkazů a náhradní řešení oznamuje formou varování.

mssql-python 1.13.0

Datum vydání: srpen 2026

Enhancements

Binární soubory ovladačů ODBC jsou dodávány pouze v mssql-python-odbc

Verze 1.13.0 odstraňuje záložní mechanismus libs/ z balíčku mssql-python wheel a deklaruje mssql-python-odbc==18.6.2.1 v install_requires. Příkaz pip install mssql-python stále vytváří funkční ovladač. Nainstalujte mssql-python-odbc výslovně při instalaci pomocí --no-deps nebo z privátního indexu, který ho nezrcadlí.

Další informace naleznete v tématu Instalace.

Hromadná kopie ze zdrojů Apache Arrow

Nová cursor.bulkcopy_arrow() metoda načítá data, která už jsou ve formátu Apache Arrow, aniž by každý řádek nejprve převáděl do Python objektů. Předání zdroje Arrow do bulkcopy() nyní vyvolá TypeError.

Pro více informací viz integrace Apache Arrow a hromadná kopie.

token_provider parametr pro přihlašovací údaje Microsoft Entra

Funkce connect() a třída Connection přijímají token_provider argument, takže můžete předat přihlašovací objekt, DefaultAzureCredential například místo pojmenování autentizačního režimu v připojovací řetězec. Tento argument se vzájemně vylučuje s klíčovým slovem Authentication a s tokeny předanými prostřednictvím attrs_before a podporuje pouze rozsah komerčního cloudu Azure.

Další informace naleznete v tématu ověřování Microsoft Entra.

Sdružování připojení s ohledem na identitu

Fond připojení nyní rozlišuje připojení podle identity Microsoft Entra. V dřívějších verzích pool klíčoval pouze na připojovací řetězec, takže pool mohl předat spojení autentizované jako jeden uživatel požadavku jiného. Ovladač také získá token pouze tehdy, když požadavek na připojení mine fond připojení, a obnoví připojení ve fondu, když do vypršení platnosti jeho tokenu zbývá méně než 5 minut.

Pro více informací viz Sdružování připojení.

Opravy chyb

executemany() vkládal řádky s nulami, když se za prvním řádkem objevily hodnoty NULL

Volání executemany(), které kombinovalo číselné hodnoty, které nebyly NULL, a hodnoty NULL, vložilo nula řádků a nevyvolalo žádnou výjimku, když se první hodnota NULL objevila až po prvním řádku. Toto chování ovlivnilo parametry tinyint, smallint, int a float . Ovladač nyní inicializuje ODBC indikátory pro každý číselný parametr s pevnou šířkou před vykonáním pole.

Převodník výstupu SQL_WVARCHAR transformoval sloupce, které nejsou řetězcové

Registrace jediného převodníku pro řetězce také převáděla hodnoty typu int, decimal a date, protože ovladač použil jako záložní převodník SQL_WVARCHAR u každého sloupce bez vlastního převodníku. Ovladač nyní používá tuto záložní možnost pouze tehdy, když je namapovaný pythonovský typ sloupce str nebo bytes.

Výstupní převodníky registrované celočíselným SQL typovým kódem nikdy neběžely

Převodníky registrované s celočíselným kódem typu SQL, například SQL_DECIMAL, byly uloženy, ale nikdy nebyly spuštěny, protože ovladač rozlišoval pouze podle typu Pythonu v cursor.description. Ovladač nyní nejprve rozhoduje podle celočíselného kódu, poté podle typu v Pythonu a nakonec podle záložní možnosti SQL_WVARCHAR.

Důležité

Pokud jste v dřívější verzi registrovali převodníky podle celočíselného SQL kódu, tyto převodníky začnou běžet při upgradu. Před nasazením je zkontrolujte, protože hodnoty sloupců, které dříve prošly beze změny, se nyní transformují.

Pro více informací viz Custom Type Converters.

Zavření čtečky Arrow neuvolnilo kurzor na serveru

Zavření čtečky Arrow způsobilo, že kurzor na straně serveru zůstal alokovaný a nadřazený objekt Cursor byl v nekonzistentním stavu, protože cursor.arrow_reader() vracelo nezpracované pyarrow.RecordBatchReader. Metoda nyní vrací obal, jehož close() metoda uvolní kurzor na straně serveru a resetuje stav kurzoru, a obal funguje jako správce kontextu.

Pro více informací viz integrace Apache Arrow.

Částečně inicializovaný kurzor zvednutý AttributeError v Cursor.__del__

Kurzor, jehož inicializátor selhal, vyvolal během sběru odpadu AttributeError jako nevyvolatelnou výjimku.

K vyvolání Cursor.__init__ došlo předtím, než nastavil atributy closed a hstmt, které se pak __del__ pokusil přečíst. Inicializátor nyní nastavuje oba atributy před jakýmkoli kódem, který může nastartovat, a __del__ chrání svůj logovací volání, aby zůstalo bezpečné během vypnutí interpretu.

mssql-python 1.12.0

Datum vydání: červenec 2026

Enhancements

Samostatný mssql-python-odbc doprovodný balíček

Binárky ovladačů ODBC jsou nyní publikovány samostatně jako mssql-python-odbc, což je datový doprovodný balíček připnutý k verzi 18.6.2. Nemusíte měnit žádný kód, protože pip install mssql-python s ním se instaluje doprovodný balíček. Nativní nakladač preferuje doprovodný balíček a když není přítomen, používá binárky zabudované uvnitř mssql-python kola.

Další informace naleznete v tématu Instalace.

Opravy chyb

cursor.bulkcopy() Nyní používá časový limit připojení rodičovského připojení

bulkcopy() nyní používá časový limit připojení svého rodičovského připojení, který nastavíte pomocí connect(..., timeout=<seconds>). Dříve samostatné připojení, které otevírá bulk copy, používalo pevně nastavený 15sekundový časový limit pro připojení, který nebylo možné změnit z Pythonu. Na nadřazené spojení vytvořené pomocí timeout=0 se stále použije výchozí hodnota 15 sekund.

Další informace najdete v části Hromadné kopírování.

cursor.bulkcopy() podporuje uživatelsky definované sloupce typu CLR

cursor.bulkcopy() dříve selhalo s Protocol Error: Unsupported TDS type for bulk copy: 0xF0 u jakéhokoli cílového sloupce, který používal uživatelsky definovaný typ Common Language Runtime (CLR), včetně vestavěných typů geography, geometry a hierarchyid. Ovladač nyní mapuje sloupce CLR UDT na varbinary(max) na drátu a streamuje bajty, které zadáte, jako payload UDT IBinarySerialize . Oprava vyjde ve mssql_py_core verzi 0.1.7.

Pro více informací viz Hromadné kopírovaní a mapování datových typů.

mssql-python 1.11.0

Datum vydání: červenec 2026

Enhancements

Zlepšená sémantika správce kontextu

with connection: nyní potvrdí transakci, pokud je blok ukončen bez chyb, a vrátí ji zpět, pokud je blok opuštěn kvůli výjimce.

Další informace naleznete v tématu Správa transakcí.

Opravy chyb

  • Bylo opraveno uváznutí na GIL při ukončování ODBC (conn.close() a cursor.close()) a v SQLDescribeParam pro parametry s hodnotou None v konfiguracích se SSH tunelem a s in-process forwarderem.
  • Pevné BINARY a VARBINARY NULL parametry v dočasných tabulkách a tabulkových proměnných. Když automatické určení typu selže, ovladač nyní vygeneruje varování Pythonu s explicitními pokyny cursor.setinputsizes().
  • Opravena chyba, kdy import mssql_python na Apple Silicon selhávalo při čisté instalaci (regrese v 1.8.0). Závislosti přibalené knihovny ODBC dylib jsou nyní přepsány pro architektury arm64 i x86_64.
  • Opraveno uváznutí GIL v jádru v Rustu, které při autentizaci pomocí Authentication=ActiveDirectoryServicePrincipal způsobovalo zamrznutí operací hromadného kopírování.

mssql-python 1.10.0

Datum vydání: červen 2026

Enhancements

Podpora hromadného kopírování v ActiveDirectoryServicePrincipal

cursor.bulkcopy() nyní podporuje Authentication=ActiveDirectoryServicePrincipal, takže můžete provádět hromadné vkládání pomocí přihlašovacích údajů instančního objektu služby.

Další informace najdete v článcích Hromadné kopírování a ověřování Microsoft Entra.

Opravy chyb

  • Byla opravena data obsahující znaky mimo ASCII v VARCHAR a CHAR v cestě načítání Arrow.
  • Pevné časové limity připojení během operací hromadného zatížení.

MSSQL-Python 1.9.0

Datum vydání: červen 2026

Enhancements

Řádkové objekty v hromadné kopii

cursor.bulkcopy() nyní přijímá načítané objekty Row přímo místo nutnosti ruční převodu n-tic.

Pro více informací viz Hromadné kopírovaní a Řádkování objektů.

Opravy chyb

  • Pevné pouzdro koleček, takže simdutf je vždy staticky propojené.
  • Pevné DECIMAL velké inserty v executemany().
  • Opraven nesprávný type-fallback pro NULL parametry.
  • Opraveny problémy při serializaci a deserializaci výjimek.
  • Opraveno nextset() tak, aby se PRINT zprávy uchovávaly napříč sadami výsledků.
  • Opraveno zpracování Row v záložní větvi executemany() pro data za běhu.
  • Opravena kontrola typů metody fetch pro nástroje statické analýzy.

mssql-python 1.8.0

Datum vydání: květen 2026

Enhancements

Podpora hromadného kopírování v ActiveDirectoryMSI

cursor.bulkcopy() nyní podporuje Authentication=ActiveDirectoryMSI systémově a uživatelem přiřazené spravované identity.

Další informace najdete v tématech Hromadné kopírování a autentizace Microsoft Entra.

Indexování řádků pomocí řetězcových klíčů

Nyní můžete přistupovat k hodnotám řádků podle názvu sloupce, například row["col"], kromě pozičního indexování a přístupu k atributům.

Pro více informací viz Řádkové objekty.

Balíček pro upgrade ovladačů ODBC

Přibalený ovladač Microsoft ODBC pro SQL Server byl aktualizován na verzi 18.6.2.1.

Opravy chyb

  • Opraveny problémy se životností odloženého atributu připojení v autentizaci založené na tokenech.
  • Opraveno opakované parsování připojovací řetězec v autentizační cestě.
  • Fixní executemany() typové anotace pro vstupy sekvencí.

mssql-python 1.7.1

Datum vydání: květen 2026

Enhancements

Rozšířené pokrytí kol a zlepšení výkonu

Toto vydání zahrnuje:

  • Kola kompatibilní s RHEL 8.
  • Obnovil jsem kola macOS Python 3.10universal2.
  • Vylepšené zpracování UTF-16 prostřednictvím simdutf.
  • Optimalizovaná execute() horká cesta.

Dopad na výkon: Propustnost dávkového zpracování se zvyšuje díky optimalizacím hot path v metodě execute().

Další informace naleznete v tématu Instalace.

Opravy chyb

  • Byla opravena selhání při ověřování, takže nyní vyvolávají výjimky DB-API mssql_python místo RuntimeError.
  • Rozšířené uvolnění GIL napříč blokováním volání atributů ODBC při vykonávání, načítání, transakcích a připojení.
  • Opraveny executemany() chyby při změně znaménka desetinných hodnot.
  • Opraveno nekonzistentní dekódování CP1252 VARCHAR napříč platformami.
  • Opravené cursor.bulkcopy() chyby pro prázdné řetězce v NVARCHAR(MAX) a VARCHAR(MAX) sloupcích.

Note

Verze 1.7.0 byla stažena kvůli problémům s publikací. Použijte verzi 1.7.1 nebo novější.

mssql-python 1.6.0

Datum vydání: duben 2026

Enhancements

Sanitizace připojovací řetězec založená na parseru

Sanitizace spojovacích řetězců nyní používá parser místo regulárních výrazů, takže spojovací řetězce obsahující speciální znaky v heslech a závorkových hodnotách se správně parsují.

Další informace naleznete v tématu Připojovací řetězce.

Opravy chyb

  • Opraveno uvolnění GIL během blokování operací ODBC připojení a odpojení.
  • Opraveny pády související s nápovědami setinputsizes() a SQL_DECIMAL v SQL_NUMERIC.
  • Opraveno nesprávné fetchone() chování pro katalogové metody ODBC.
  • Byly opraveny chyby neplatného stavu kurzoru při použití reset_cursor=False.
  • Fixní executemany() tipy pro sekvence parametrů založené na mapování.
  • Přidána ochrana proti průchodu adresářovou strukturou pro setup_logging(log_file_path=...).

mssql-python 1.5.0

Datum vydání: duben 2026

Nové funkce

Podpora načítání Apache Arrow

Tři nové metody kurzoru poskytují vysoce výkonné sloupcové vyhledávání dat prostřednictvím rozhraní Arrow C Data Interface:

  • cursor.arrow() vrátí kompletní pyarrow.Table.
  • cursor.arrow_batch() Vrátí jedno pyarrow.RecordBatch.
  • cursor.arrow_reader() vrací pyarrow.RecordBatchReader pro streamování.

Tyto metody nevytvářejí Python objekt pro každou hodnotu. Pro kompletní dokumentaci viz integrace Apache Arrow.

podpora typu sql_variant

Ovladač nyní detekuje sql_variant sloupce při načítání, rozlišuje jejich základní typ a vrací správně zadané hodnoty v Python místo surových bajtů.

Note

sql_variant Sloupce používají streamovanou cestu načítaní, která může mít mírný dopad na výkon ve srovnání s pevně danými sloupci.

Další informace naleznete v tématu Mapování datových typů.

Nativní podpora UUID

Nové nastavení native_uuid určuje, zda se sloupce UNIQUEIDENTIFIER vracejí jako objekty uuid.UUID (výchozí), nebo jako řetězce psané velkými písmeny kompatibilní s pyodbc. Konfigurujte to na úrovni modulu nebo podle připojení.

Pro více informací viz Konfigurace modulu.

Veřejný export třídy řádku

Třída Row je nyní exportována na nejvyšší úrovni pro typové anotace.

Pro více informací viz Řádkové objekty.

Opravy chyb

  • Opravena chybná detekce ? uvnitř identifikátorů v závorkách, řetězcových literálů a komentářů.
  • Pevné přiřazení NULL parametrů pro VARBINARY sloupce (již nezpůsobuje implicitní konverzní chyby).
  • Opraven problém, kdy hodnoty datetime.time při zpětném převodu ztrácely mikrosekundy u sloupců od TIME(1) do TIME(7).
  • Byla opravena cesta načítání Arrow, aby správně zahrnovala zlomkové sekundy pro sloupce TIME.
  • Opraveno hromadné kopírování pomocí autentizačních metod Microsoft Entra ID (zastaralá přihlašovací pole už nezpůsobují chyby validace).
  • Cacheované instance přihlašovacích údajů Azure Identity na úrovni modulu pro lepší výkon autentizace.

mssql-python 1.4.0

Datum vydání: únor 2026

Nové funkce

Podpora hromadného kopírování

Vysoce výkonné hromadné načítání dat je nyní dostupné prostřednictvím cursor.bulkcopy(). Metoda přijímá možnosti pro batch_size, timeout, column_mappings, keep_identity, check_constraints, table_lock, keep_nulls, fire_triggersa .use_internal_transaction

Další informace najdete v části Hromadné kopírování.

Vylepšení

  • Optimalizace výkonu pro velké sady výsledků.
  • Snížení spotřeby paměti během dávkových operací.
  • Vylepšené chybové zprávy při selhání hromadného kopírování.

mssql-python 1.3.0

Datum vydání: leden 2026

Nové funkce

Třída nastavení

Nakonfigurujte chování celého modulu pomocí nové Settings třídy, která zahrnuje lowercase nastavení pro názvy sloupců v cursor.description.

Pro více informací viz Konfigurace modulu.

Vylepšení

  • Lepší řešení vypršení připojení během failoveru Azure SQL.
  • Zlepšená kompatibilita s Python 3.13.

mssql-python 1.2.0

Datum vydání: leden 2026

Nové funkce

Metody objevování schémat

Nové metody kurzoru zkoumají metadata databáze: tables(), , primaryKeys()columns(), foreignKeys(), procedures(), , statistics()a getTypeInfo().

Pro více informací viz Schema discovery.

Vylepšení

  • Vylepšené cachování metadat pro opakované dotazy na schémata.
  • Lepší zpracování vypočítaných sloupců ve výsledcích columns().

mssql-python 1.1.0

Datum vydání: prosinec 2025

Nové funkce

Vlastní výstupní měniče

Zaregistrujte vlastní funkce pro transformaci hodnot sloupců během načítání pomocí add_output_converter(), get_output_converter(), remove_output_converter() a clear_output_converters().

Další informace naleznete v článku Vlastní převaděče typů.

Vylepšení

  • Lepší chybové zprávy při selhání převodu typů.
  • Podpora funkcí převodníku, které vracejí None.

mssql-python 1.0.0

Datum vydání: listopad 2025

První vydání GA

První všeobecně dostupná verze mssql-python, nativního Python ovladače Microsoft pro SQL Server.

Pro více informací viz ovladač mssql-python.

Základní funkce

  • Architektura DDBC: Přímé připojení k databázi bez nutnosti instalace ovladačů ODBC.
  • Soulad s DB-API 2.0: Standardní databázové rozhraní Pythonu.
  • Sdružování připojení: Vestavěná správa fondu připojení.
  • Ověřování Microsoft Entra: Plná podpora ověřování na základě identity Azure.
  • TLS šifrování: Zabezpečené spojení pomocí ověřování certifikátů.

Funkce připojení

  • 21 klíčových slov připojovacího řetězce.
  • 9 autentizačních režimů (SQL, Windows a 7 metod Microsoft Entra ID).
  • Ovládání autocommitu.
  • Metody provádění: execute(), executemany(), a batch_execute().
  • Atributy připojení prostřednictvím set_attr() a getinfo().
  • Podpora správce kontextu.

Funkce kurzoru

  • Standardní metody načítání: fetchone(), fetchmany(), . fetchall()
  • Rozšířené metody: fetchval(), . skip()
  • Metody provádění: execute() a executemany().
  • Řádkové objekty s přístupem k atributům a indexům.
  • Navigace s množinou výsledků pomocí nextset().

Podpora datových typů

  • Všechny nativní typy pro SQL Server.
  • Mapování typů Python↔SQL.
  • SQL typové konstanty pro explicitní typování (například mssql_python.SQL_DECIMAL).
  • Zpracování hodnoty NULL stejně jako v Pythonu None.

Podpora transakcí

  • Ruční potvrzení a vrácení změn.
  • Režim automatického potvrzování.
  • Kontrola úrovně izolace.
  • Detekce a řešení zablokování.

Režimy ověřování

Mode Popis
Ověřování SQL Serveru Uživatelské jméno a heslo
Autentizace Windows Trusted_Connection
ActiveDirectoryDefault DefaultAzureCredential
ActiveDirectoryInteractive Přihlášení v prohlížeči
ActiveDirectoryDeviceCode Tok kódu zařízení
ActiveDirectoryPassword Microsoft Entra uživatelské jméno a heslo (zastaralé; používá ROPC)
ActiveDirectoryMSI Spravovaná identita
ActiveDirectoryServicePrincipal Hlavní služba
ActiveDirectoryIntegrated Windows Kerberos

Upgrade

Z pyodbc

Pro podrobné pokyny k migraci viz Migrate from pyodbc.

Hlavní rozdíly:

  • Podporovány jsou jak ? (qmark), tak (pyformat) styly %(name)s parametrů. Vaše stávající ? dotazy fungují bez změn.
  • Žádná callproc() metoda. Místo toho použijte příkazy EXECUTE.
  • Vestavěné sdružování připojení.
  • Žádná závislost na externím ODBC ovladači.

Z pymssql

Pro podrobné pokyny k migraci viz Migrate from pymssql.

Hlavní rozdíly:

  • Nahraďte značky parametrů %s a %d značkami ? nebo %(name)s.
  • Použijte připojovací řetězec místo pozičních argumentů.
  • Žádná závislost na FreeTDS.
  • Více současných kurzorů na jedno připojení.
  • Řádkové objekty s přístupem k atributům nahrazují as_dict=True.

Mezi verzemi mssql-python

Upgradujte ovladač pro nové funkce a opravy.

pip install --upgrade mssql-python

Před upgradem produkčních systémů si zkontrolujte poznámky k vydání, jestli se neobjeví nějaké zásadní změny.

Plán cesty

Pro nadcházející funkce a vývojový plán navštivte repozitář GitHub.