Was gibt es Neues in mssql-python

Dieser Artikel listet auf, was sich in jeder Version des mssql-python-Treibers geändert hat, zuerst neueste. Jeder Abschnitt behandelt neue Funktionen, Verhaltensänderungen und Fehlerbehebungen für eine Version.

Für die Versionen, die Microsoft derzeit unterstützt, siehe Support-Lebenszyklus.

mssql-python 1.14.0

Veröffentlichungsdatum: August 2026

Enhancements

Parametererkennung und -bindung laufen im nativen Code

Die Erkennung und Bindung von Parametertypen läuft jetzt in einer einzigen nativen Pipeline statt in Python-Aufrufen pro Parameter. Diese Änderung behebt einen erheblichen Leistungsengpass, was insbesondere bei größeren Operationen wie Masseneinfügungen zu stärkeren Verbesserungen des End-to-End-Durchsatzes führt. Eine Änderung der Anwendung ist nicht erforderlich.

Fehlerkorrekturen

Das Argument timeout für connect() setzt das Abfrage-Timeout statt des Authentifizierungs-Timeouts

Das Argument timeout setzt nun SQL_ATTR_LOGIN_TIMEOUT und begrenzt den Authentifizierungsversuch, genau wie es der Argumentname und die Dokumentation beschreiben. In früheren Versionen wurde es zum anweisungsbezogenen Abfrage-Timeout, sodass connect(timeout=30) nicht begrenzte, wie lange ein Verbindungsversuch dauern konnte, und Abfragen nach 30 Sekunden abbrach. Der Timeout pro Aussage bleibt als Eigenschaft Connection.timeout verfügbar.

Important

Wenn Sie connect() an timeout übergeben haben, um lang laufende Abfragen abzubrechen, tritt dieses Verhalten nicht mehr auf. Connection.timeout stattdessen festlegen. Dasselbe gilt, wenn du dich auf bulkcopy() verlassen hast, um den Connect-Timeout zu erhöhen, den Connection.timeout für seine interne Verbindung verwendet: Setze connect(timeout=), bevor du den Cursor erstellst.

Weitere Informationen finden Sie unter Verbindungszeit.

bulkcopy() abgelehnt timeout=0

Ein timeout von 0 führte zu einem Validierungsfehler, obwohl 0 in der zugrunde liegenden Bulk-Copy-API kein Timeout bedeutet. Die Methode akzeptiert 0 nun und deaktiviert das Operationen-Timeout. Negative, nicht-ganzzahlige und boolesche Werte werden weiterhin abgelehnt.

Weitere Informationen finden Sie unter Massenkopieren.

Cleanup ersetzte die ursprüngliche Arrow-Fetch-Ausnahme

Wenn ein Abruf von einem Arrow-Reader fehlschlug, löste der Bereinigungspfad des Treibers einen zweiten Fehler aus, der den ursprünglichen ersetzte, sodass Aufrufer einen Bereinigungsfehler sahen anstatt des Grundes, warum der Abruf fehlschlug. Die Bereinigung prüft jetzt zuerst den Status des Cursors und behält die ursprüngliche Ausnahme bei.

executemany() Dezimale Umrechnungsfehler beinhalteten Parameterwerte

Ein Dezimal-Konvertierungsfehler in executemany() gab den problematischen Wert über die verkettete Ausnahme weiter, wodurch Kundendaten in Anwendungsprotokolle und Überwachungssysteme gelangen konnten. Der Fehler meldet nun nur noch den Zeilenindex, den Spaltenindex und den Werttyp.

Weitere Informationen finden Sie unter Fehlerbehandlung.

Massenkopieren abgelehnter Arrow-View-Typen

bulkcopy_arrow() konnte keine Arrow-View-Arrays mit variabler Länge verarbeiten, daher mussten Polars-string_viewSpalten zuerst mit DataFrame.to_arrow() konvertiert werden. String-View-Werte und NULL-Werte werden nun direkt über die Arrow-C-Data-Schnittstelle weitergereicht.

Weitere Informationen finden Sie unter Polars-Integration.

Das Laden der Windows-Erweiterung nutzte die Host-CPU-Architektur

Unter Windows wählte der Treiber seine native Erweiterung basierend auf der Host-CPU und nicht auf dem laufenden Interpreter, sodass x64 Python auf einem ARM64-Host über einen Fallback-Pfad lud und Benachrichtigungen an Stdout schrieb. Der Loader leitet nun die Architektur vom Interpreter ab und meldet Rückfälle als Warnungen.

mssql-python 1.13.0

Veröffentlichungsdatum: August 2026

Enhancements

Die Binärdateien des ODBC-Treibers sind nur in mssql-python-odbc

Version 1.13.0 entfernt den libs/ Fallback vom mssql-python Rad und deklariert mssql-python-odbc==18.6.2.1 in install_requires. Der Befehl pip install mssql-python erzeugt weiterhin einen funktionierenden Treiber. Installiere mssql-python-odbc explizit, wenn du mit --no-deps installierst oder aus einem privaten Index, der es nicht spiegelt.

Weitere Informationen finden Sie unter Installation.

Massenkopieren aus Apache Arrow-Quellen

Die neue cursor.bulkcopy_arrow() Methode lädt bereits Daten im Apache Arrow-Format, ohne dass jede Zeile zuerst in Python-Objekte umgewandelt wird. Das Übergeben einer Arrow-Quelle an bulkcopy() löst jetzt TypeError aus.

Weitere Informationen finden Sie unter Apache Arrow Integration und Bulk Copy.

token_providerParameter für Microsoft Entra-Zugangsdaten

Die connect() Funktion und die Connection Klasse akzeptieren ein token_provider Argument, sodass Sie ein Credential-Objekt DefaultAzureCredential wie zum Beispiel weitergeben können, anstatt einen Authentifizierungsmodus in der Verbindungszeichenfolge zu benennen. Das Argument schließt das Schlüsselwort Authentication sowie die über attrs_before übergebenen Token gegenseitig aus und unterstützt nur den Bereich der kommerziellen Azure-Cloud.

Weitere Informationen finden Sie unter Microsoft Entra-Authentifizierung.

Identitätsbasiertes Verbindungspooling

Im Verbindungspool werden Verbindungen jetzt anhand der Microsoft Entra-Identität getrennt. In früheren Versionen war der Pool nur auf den Verbindungszeichenfolge angewiesen, sodass der Pool eine als ein Benutzer authentifizierte Verbindung an eine Anfrage eines anderen übergeben konnte. Der Treiber erhält einen Token auch nur, wenn eine Verbindungsanfrage den Pool verfehlt, und aktualisiert eine Poolverbindung, wenn ihr Token innerhalb von 5 Minuten vor Ablauf ist.

Weitere Informationen finden Sie unter Connection pooling.

Fehlerkorrekturen

executemany() fügte 0 Zeilen ein, wenn nach der ersten Zeile NULL-Werte auftraten

Ein executemany() Aufruf, der nicht-NULL- und NULL-Zahlenwerte mischte, fügte null Zeilen ein und erzeugte keine Ausnahme, als das erste NULL nach der ersten Zeile erschien. Dieses Verhalten beeinflusste Tinyint-, Smallint-, Int- und Float-Parameter . Der Treiber initialisiert nun ODBC-Indikatoren für jeden numerischen Parameter mit fester Breite vor der Ausführung des Arrays.

Ein SQL_WVARCHAR Ausgangswandler transformierte nicht-stringartige Spalten

Das Registrieren eines einzelnen String-Konverters transformierte auch int-, dezimal- und Datumswerte , da der Treiber für jede Spalte ohne eigenen Konverter auf den SQL_WVARCHAR Konverter zurückfiel. Der Treiber verwendet diesen Fallback jetzt nur dann, wenn der Python-Typ, dem die Spalte zugeordnet ist, bytes oder str ist.

Ausgabekonverter, die durch ganzzahligen SQL-Code registriert wurden, liefen nie

Konverter, die mit einem ganzzahligen SQL-Typcode wie SQL_DECIMAL registriert wurden, wurden gespeichert, aber nie aufgerufen, weil der Treiber nur anhand des Python-Typs in cursor.description weiterleitete. Der Treiber dispatcht nun zuerst den Integer-Code, dann den Python-Typ und anschließend den SQL_WVARCHAR Fallback.

Important

Wenn du Konverter in einer früheren Version mit ganzzahligem SQL-Code registriert hast, beginnen diese Konverter beim Upgrade zu laufen. Überprüfen Sie sie, bevor Sie sie einsetzen, denn Spaltenwerte, die zuvor unverändert durchgegangen sind, werden jetzt transformiert.

Weitere Informationen finden Sie unter Custom type Converters.

Das Schließen eines Arrow-Readers hat den serverseitigen Cursor nicht freigegeben

Das Schließen eines Arrow-Readers ließ den serverseitigen Cursor allokiert und das übergeordnete Cursor in einem inkonsistenten Zustand zurück, weil cursor.arrow_reader() ein rohes pyarrow.RecordBatchReader zurückgab. Die Methode gibt nun einen Wrapper zurück, dessen close() Methode den serverseitigen Cursor freigibt und den Cursorzustand zurücksetzt, und der Wrapper arbeitet als Kontextmanager.

Weitere Informationen finden Sie unter Apache Arrow Integration.

Ein teilweise initialisierter Cursor hat AttributeError in Cursor.__del__ ausgelöst.

Ein Cursor, dessen Initialisierer fehlschlug, löste während der Speicherbereinigung ein AttributeError als nicht auslösbare Ausnahme aus.

Cursor.__init__ wurde ausgelöst, bevor es die Attribute closed und hstmt gesetzt hatte, die __del__ dann zu lesen versuchte. Der Initialisierer setzt nun beide Attribute vor jedem Code, der ausgerufen werden kann, und __del__ schützt seinen Logging-Aufruf, damit er beim Abschalten des Interpreters sicher bleibt.

mssql-python 1.12.0

Veröffentlichungsdatum: Juli 2026

Enhancements

Eigenständiges mssql-python-odbc Begleitpaket

Die ODBC-Treiber-Binärdateien werden nun separat als mssql-python-odbc veröffentlicht, ein reines datenbasiertes Begleitpaket, das an Version gepinnt ist 18.6.2. Du musst keinen Code ändern, da pip install mssql-python das zugehörige Paket mitinstalliert. Der native Loader bevorzugt das Begleitpaket und greift auf die im mssql-python Wheel gebündelten Binärdateien zurück, wenn dieses nicht vorhanden ist.

Weitere Informationen finden Sie unter Installation.

Fehlerkorrekturen

cursor.bulkcopy() verwendet jetzt das Verbindungszeitlimit der übergeordneten Verbindung

bulkcopy() verwendet nun das Verbindungs-Timeout seiner übergeordneten Verbindung, das Sie mit connect(..., timeout=<seconds>) festlegen. Früher nutzte die separate Verbindung, die eine Massenkopie öffnet, einen fest programmierten 15-sekündigen Verbindungs-Timeout, den man in Python nicht überschreiben konnte. Eine mit timeout=0 erstellte übergeordnete Verbindung verwendet weiterhin standardmäßig 15 Sekunden.

Weitere Informationen finden Sie unter Massenkopie.

cursor.bulkcopy() unterstützt CLR-benutzerdefinierte Typspalten

cursor.bulkcopy() führte zuvor mit Protocol Error: Unsupported TDS type for bulk copy: 0xF0 bei jeder Zielspalte zu einem Fehler, die einen CLR-benutzerdefinierten Typ verwendete, einschließlich der integrierten Typen geography, geometry und hierarchyid. Der Treiber mappt jetzt die CLR-UDT-Spalten auf varbinary(max) auf dem Draht und streamt die von dir bereitgestellten Bytes als Nutzlast des IBinarySerialize UDT. Die Korrektur ist in mssql_py_core 0.1.7 enthalten.

Weitere Informationen finden Sie unter Massenkopie und Datentypzuordnungen.

mssql-python 1.11.0

Veröffentlichungsdatum: Juli 2026

Enhancements

Verbesserte Kontextmanager-Semantik

with connection: schreibt die Transaktion nun fest, wenn der Block ordnungsgemäß beendet wird, und setzt sie zurück, wenn der Block aufgrund einer Ausnahme verlassen wird.

Weitere Informationen finden Sie unter Transaktionsverwaltung.

Fehlerkorrekturen

  • Ein GIL-Deadlock im ODBC-Teardown-Pfad (conn.close() und cursor.close()) sowie in SQLDescribeParam für None-wertige Parameter in SSH-Tunnel‑ und In-Process-Forwarder-Einrichtungen wurde behoben.
  • Feste und BINARY NULL-Parameter VARBINARY in temporären Tabellen und Tabellenvariablen. Wenn die automatische Typauflösung fehlschlägt, sendet der Treiber nun eine Python-Warnung mit expliziter cursor.setinputsizes()-Anweisung.
  • Fehler import mssql_python auf Apple Silicon mit einer sauberen Installation behoben (Regression in Version 1.8.0). Die gebündelten ODBC-Dylib-Abhängigkeiten werden nun sowohl für die Architektur arm64 als auch für die Architektur x86_64 umgeschrieben.
  • Ein GIL-Deadlock im Rust-Kern wurde behoben, der Massenkopiervorgänge beim Authentifizieren mit Authentication=ActiveDirectoryServicePrincipal zum Einfrieren brachte.

mssql-python 1.10.0

Veröffentlichungsdatum: Juni 2026

Enhancements

ActiveDirectoryServicePrincipal-Unterstützung für Massenkopien

cursor.bulkcopy() unterstützt jetzt Authentication=ActiveDirectoryServicePrincipal, sodass Sie Masseneinfügungen mit Service-Principal-Anmeldeinformationen durchführen können.

Weitere Informationen finden Sie unter Massenkopieren und Microsoft Entra-Authentifizierung.

Fehlerkorrekturen

  • Probleme mit Nicht-ASCII-Daten in VARCHAR und CHAR im Arrow-Fetch-Pfad wurden behoben.
  • Feste Verbindungszeitbegrenzungen während Großlasten.

mssql-python 1.9.0

Veröffentlichungsdatum: Juni 2026

Enhancements

Zeilenobjekte in Massenkopiervorgängen

cursor.bulkcopy() akzeptiert nun abgerufene Row-Objekte direkt, anstatt eine manuelle Tupelkonvertierung zu erfordern.

Weitere Informationen finden Sie unter Bulk-Copy und Row-Objekte.

Fehlerkorrekturen

  • Die feste Wheel-Verpackung ist daher simdutf immer statisch verknüpft.
  • Große DECIMAL-Einfügungen in executemany() behoben.
  • Der falsche Typ-Fallback für NULL-Parameter wurde behoben.
  • Probleme beim Serialisieren und Deserialisieren von Ausnahmen behoben.
  • nextset() behoben, sodass PRINT-Nachrichten über mehrere Ergebnismengen hinweg beibehalten werden.
  • Behoben wurde die Verarbeitung von Row im executemany()-Fallback-Pfad bei der Datenausführung.
  • Feste Fetch-Methoden-Typprüfung für statische Analysetools.

mssql-python 1.8.0

Veröffentlichungsdatum: Mai 2026

Enhancements

ActiveDirectoryMSI-Unterstützung für Massenkopien

cursor.bulkcopy() unterstützt nun Authentication=ActiveDirectoryMSI systemzugeordnete und benutzerzugewiesene verwaltete Identitäten.

Weitere Informationen finden Sie unter Massenkopieren und Microsoft Entra-Authentifizierung.

Zeilenindizierung per String-Schlüssel

Sie können jetzt zusätzlich zur Positionsindizierung und zum Attributzugriff über den Spaltennamen, zum Beispiel row["col"], auf Zeilenwerte zugreifen.

Weitere Informationen finden Sie unter Zeilenobjekte.

Upgrade des mitgelieferten ODBC-Treibers

Der mitgelieferte Microsoft ODBC-Treiber für SQL Server wurde auf 18.6.2.1 aktualisiert.

Fehlerkorrekturen

  • Behebung von aufgeschobenen Connect-Attribut-Lebensdauerproblemen bei tokenbasierter Authentifizierung.
  • Das wiederholte Parsen der Verbindungszeichenfolge im Authentifizierungspfad wurde behoben.
  • Feste executemany()-Typannotationen für Sequenzeingaben.

mssql-python 1.7.1

Veröffentlichungsdatum: Mai 2026

Enhancements

Erweiterte Radabdeckung und Leistungsverbesserungen

Diese Version umfasst:

  • RHEL 8-kompatible Felgen.
  • Ich habe die macOS Python 3.10 universal2 Räder wiederhergestellt.
  • Verbesserte UTF-16-Handhabung durch simdutf.
  • Optimierter execute() heißer Pfad.

Leistungsauswirkungen: Der Durchsatz der Batch-Ausführung verbessert sich durch Hot-Path-Optimierungen in der execute() Methode.

Weitere Informationen finden Sie unter Installation.

Fehlerkorrekturen

  • Authentifizierungsfehler wurden behoben, sodass jetzt RuntimeError DB-API-Ausnahmen anstelle von mssql_python ausgelöst werden.
  • Erweiterte GIL-Freigabe bei blockierenden ODBC-Ausführungs-, Abruf-, Transaktions‑ und Verbindungsattributaufrufen.
  • Ausfälle von executemany() beim Vorzeichenwechsel von Dezimalwerten behoben.
  • Inkonsistente plattformübergreifende Dekodierung von CP1252 VARCHAR behoben.
  • cursor.bulkcopy()Fehler bei leeren Zeichenfolgen in den Spalten NVARCHAR(MAX) und VARCHAR(MAX) behoben.

Note

Version 1.7.0 wurde aufgrund von Veröffentlichungsproblemen zurückgezogen. Verwenden Sie Version 1.7.1 oder neuer.

mssql-python 1.6.0

Veröffentlichungsdatum: April 2026

Enhancements

Parserbasierte Bereinigung von Verbindungszeichenfolgen

Die Bereinigung von Verbindungszeichenfolgen verwendet jetzt einen Parser statt regulärer Ausdrücke, sodass Verbindungszeichenfolgen, die Sonderzeichen in Passwortfeldern und in geschweiften Klammern eingeschlossene Werte enthalten, korrekt analysiert werden.

Weitere Informationen finden Sie unter Verbindungszeichenfolgen.

Fehlerkorrekturen

  • GIL-Freigabe beim Blockieren von ODBC-Verbindungs‑ und ‑Trennvorgängen wurde behoben.
  • Abstürze mit setinputsizes() sowie SQL_DECIMAL‑ und SQL_NUMERIC-Hinweisen behoben.
  • Das falsche Verhalten von fetchone() für ODBC-Katalogmethoden wurde behoben.
  • Fehler aufgrund eines ungültigen Cursorzustands bei Verwendung von reset_cursor=False wurden behoben.
  • Feste Hinweise vom Typ executemany() für zuordnungsbasierte Parametersequenzen.
  • Für setup_logging(log_file_path=...) wurde ein Schutz vor Pfaddurchquerung hinzugefügt.

mssql-python 1.5.0

Veröffentlichungsdatum: April 2026

Neue Funktionen

Apache Arrow-Abrufunterstützung

Drei neue Cursor-Methoden ermöglichen den hochleistungsfähigen Abruf von Spaltendaten über das Arrow C Data Interface:

  • cursor.arrow() gibt ein vollständiges pyarrow.TableErgebnis zurück.
  • cursor.arrow_batch() gibt eine einzelne pyarrow.RecordBatchzurück.
  • cursor.arrow_reader() gibt zum Streamen ein pyarrow.RecordBatchReader zurück.

Diese Methoden erstellen kein Python-Objekt für jeden Wert. Für vollständige Dokumentation siehe Apache Arrow Integration.

Unterstützung für den Typ sql_variant

Der Treiber erkennt sql_variant nun Spalten beim Abruf, löst ihren zugrundeliegenden Basistyp auf und liefert korrekt typisierte Python-Werte statt Rohbytes.

Note

sql_variant Spalten verwenden einen Streaming-Abrufpfad, was im Vergleich zu Spalten mit festem Datentyp zu leichten Leistungseinbußen führen kann.

Weitere Informationen finden Sie unter Datentypzuordnungen.

Native UUID-Unterstützung

Eine neue native_uuid Einstellung steuert, ob UNIQUEIDENTIFIER Spalten als Objekte (Standard) oder als uuid.UUID pyodbc-kompatible Großbuchstaben-Zeichenketten zurückgegeben werden. Konfigurieren Sie es auf Modulebene oder pro Verbindung.

Weitere Informationen finden Sie unter Modulkonfiguration.

Reihenklasse – Öffentlicher Export

Die Klasse Row wird nun auf der obersten Ebene für Typannotationen exportiert.

Weitere Informationen finden Sie unter Zeilenobjekte.

Fehlerkorrekturen

  • False Positive-Erkennung ? innerhalb von Klammern-Identifikatoren, String-Literals und Kommentaren wurde behoben.
  • Fixierte NULL-Parameterbindung für VARBINARY Spalten (führt nicht mehr zu impliziten Umrechnungsfehlern).
  • Behoben wurde ein Problem, bei dem datetime.time-Werte bei Roundtrips in den Spalten TIME(1) bis TIME(7) Mikrosekunden verloren.
  • Der Arrow-Abrufpfad wurde korrigiert, sodass Sekundenbruchteile für TIME-Spalten korrekt berücksichtigt werden.
  • Behobene Massenkopie mit Microsoft Entra ID-Authentifizierungsmethoden (veraltete Zugangsdaten verursachen keine Validierungsfehler mehr).
  • Zwischengespeicherte Azure Identity-Credential-Instanzen auf Modulebene für eine verbesserte Authentifizierungsleistung.

mssql-python 1.4.0

Veröffentlichungsdatum: Februar 2026

Neue Funktionen

Unterstützung für Massenkopien

Leistungsstarkes Laden von Massendaten ist jetzt über cursor.bulkcopy() verfügbar. Die Methode akzeptiert Optionen für batch_size, timeout, column_mappings, keep_identity, check_constraints, table_lock, keep_nulls, fire_triggers und use_internal_transaction.

Weitere Informationen finden Sie unter Massenkopieren.

Improvements

  • Leistungsoptimierungen für große Ergebnismengen.
  • Reduzierter Speicherverbrauch während Batch-Operationen.
  • Verbesserte Fehlermeldungen bei Massen-Kopierfehlern.

mssql-python 1.3.0

Veröffentlichungsdatum: Januar 2026

Neue Funktionen

Klasse „Einstellungen“

Konfigurieren Sie modulweites Verhalten über die neue Settings Klasse, die die lowercase Einstellung für Spaltennamen in cursor.descriptionenthält.

Weitere Informationen finden Sie unter Modulkonfiguration.

Improvements

  • Besserer Umgang mit Verbindungszeitbegrenzungen während eines Azure SQL-Failovers.
  • Verbesserte Kompatibilität mit Python 3.13.

mssql-python 1.2.0

Veröffentlichungsdatum: Januar 2026

Neue Funktionen

Methoden zur Schema-Entdeckung

Neue Cursor-Methoden untersuchen Datenbankmetadaten: primaryKeys(), foreignKeys(), procedures(), statistics(), getTypeInfo(), columns() und tables().

Weitere Informationen finden Sie unter Schema-Entdeckung.

Improvements

  • Verbessertes Metadaten-Caching für wiederholte Schema-Abfragen.
  • Bessere Handhabung berechneter Spalten bei columns()-Ergebnissen.

mssql-python 1.1.0

Veröffentlichungsdatum: Dezember 2025

Neue Funktionen

Benutzerdefinierte Ausgabekonverter

Registrieren Sie benutzerdefinierte Funktionen, um Spaltenwerte während des Abrufs zu transformieren, mit add_output_converter(), get_output_converter(), , remove_output_converter()und clear_output_converters().

Weitere Informationen finden Sie unter Custom type Converters.

Improvements

  • Bessere Fehlermeldungen bei Fehlschlägen der Typkonvertierung.
  • Unterstützung für Konverterfunktionen, die None zurückgeben.

mssql-python 1.0.0

Veröffentlichungsdatum: November 2025

Erste GA-Veröffentlichung

Die erste allgemeine Verfügbarkeitsversion von mssql-python, dem nativen Python-Treiber von Microsoft für SQL Server.

Für weitere Informationen siehe mssql-python driver.

Wichtige Funktionen

  • DDBC-Architektur: Direkte Datenbankverbindung ohne Installation eines ODBC-Treibers.
  • DB-API 2.0-Konformität: Standard-Python-Datenbankschnittstelle.
  • Verbindungs-Pooling: Eingebautes Verbindungs-Pool-Management.
  • Microsoft Entra-Authentifizierung: Volle Unterstützung für Azure-Identitätsbasierte Authentifizierung.
  • TLS-Verschlüsselung: Sichere Verbindungen mit Zertifikatsvalidierung.

Verbindungsmerkmale

  • 21 Verbindungszeichenfolge-Schlüsselwörter.
  • 9 Authentifizierungsmodi (SQL, Windows und 7 Microsoft Entra ID-Methoden).
  • Autocommit-Steuerung.
  • Ausführungsmethoden: execute(), executemany(), und batch_execute().
  • Verbindungsattribute durch set_attr() und getinfo().
  • Unterstützung für den Kontextmanager.

Cursor-Funktionen

  • Standard-Abrufmethoden: fetchone(), fetchmany(), fetchall().
  • Erweiterte Methoden: fetchval(), skip().
  • Ausführungsmethoden: execute() und executemany().
  • Zeilenobjekte mit Attribut- und Indexzugriff.
  • Mehrfach-Ergebnis-Set-Navigation mit nextset().

Datentypunterstützung

  • Alle SQL Server-nativen Typen.
  • Python↔SQL-Typzuordnungen.
  • SQL-Typkonstanten für explizite Typisierung (zum Beispiel mssql_python.SQL_DECIMAL).
  • NULL-Handling in Python None.

Transaktionsunterstützung

  • Manuelles Commit und Rollback.
  • Autocommit-Modus.
  • Steuerung der Isolationsstufe.
  • Deadlock-Erkennung und -handhabung.

Authentifizierungsmodi

Modus Beschreibung
SQL Server Authentifizierung Benutzername und Kennwort
Windows-Authentifizierung Trusted_Connection
ActiveDirectoryDefault DefaultAzureCredential
ActiveDirectoryInteractive Browserbasierte Anmeldung
ActiveDirectoryDeviceCode Gerätecodefluss
ActiveDirectoryPassword Microsoft Entra Benutzername und Passwort (veraltet; verwendet ROPC)
ActiveDirectoryMSI Verwaltete Identität
ActiveDirectoryServicePrincipal Service Principal
ActiveDirectoryIntegrated Windows Kerberos

Upgrade

Von pyodbc

Für detaillierte Migrationshinweise siehe Migration von pyodbc.

Wichtige Unterschiede:

  • Sowohl ? (qmark) als auch %(name)s (pyformat) Parameterstile werden unterstützt. Deine bestehenden ? Abfragen funktionieren ohne Änderungen.
  • Keine callproc() Methode. Verwenden Sie stattdessen EXECUTE-Anweisungen.
  • Integrierte Verbindungspoolverwaltung.
  • Keine externe ODBC-Treiberabhängigkeit.

Aus pymssql

Für detaillierte Migrationsratschläge siehe Migrate from pymssql.

Wichtige Unterschiede:

  • Ersetzen Sie die Parametermarkierungen %s und %d durch ? oder %(name)s.
  • Verwenden Sie einen Verbindungszeichenfolge anstelle von Positionsargumenten.
  • Keine FreeTDS-Abhängigkeit.
  • Mehrere gleichzeitige Cursor pro Verbindung.
  • Zeilenobjekte mit Attributzugriff ersetzen as_dict=True.

Zwischen mssql-python-Versionen

Rüste den Treiber auf, um neue Funktionen und Verbesserungen zu erhalten.

pip install --upgrade mssql-python

Prüfen Sie vor der Aktualisierung von Produktivsystemen die Versionshinweise auf mögliche inkompatible Änderungen.

Roadmap

Für kommende Funktionen und die Entwicklungsroadmap siehe das GitHub-Repository.