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 mit höheren End-to-End-Durchsätzen bei größeren Operationen wie Bulk-Inserts. Eine Änderung der Anwendung ist nicht erforderlich.

Fehlerkorrekturen

Das Argument timeout , das Abfrage-Timeout statt des Authentifizierungs-Timeout zu connect() setzen

Das Argument timeout legt nun den Authentifizierungsversuch fest SQL_ATTR_LOGIN_TIMEOUT und beschränkt ihn, was der Name des Arguments und der Dokumentation ist. In früheren Versionen wurde dies zum Timeout für Abfragen pro Anweisung, sodass connect(timeout=30) die Dauer eines Verbindungsversuchs nicht begrenzt wurde, und Abfragen wurden nach 30 Sekunden abgebrochen. Der Timeout pro Aussage bleibt als Eigenschaft Connection.timeout verfügbar.

Important

Wenn man langlaufende connect() Anfragen abgebrochen timeout hat, tritt dieses Verhalten nicht mehr auf. Stattdessen Set Connection.timeout . Dasselbe gilt, wenn du darauf angewiesen bist, die Verbindungszeit, die bulkcopy() für die interne Verbindung verwendet wird, zu erweitern: setze Connection.timeout sie connect(timeout=) vor der Erstellung des Cursors.

Weitere Informationen finden Sie unter Verbindungszeit.

bulkcopy() abgelehnt timeout=0

A timeout of 0 hat einen Validierungsfehler ausgelöst, obwohl 0 es keinen Timeout in der zugrunde liegenden Massenkopie-API 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 Massenkopie.

Cleanup ersetzte die ursprüngliche Arrow-Fetch-Ausnahme

Wenn ein Abruf von einem Arrow-Leser fehlschlug, zeigte der Aufräumpfad des Treibers einen zweiten Fehler, der den ursprünglichen ersetzte, sodass Anrufer einen Aufräumfehler anstelle des Fehlers des Abrufs sahen. Die Aufräumung prüft jetzt zuerst den Cursorzustand und bewahrt die ursprüngliche Ausnahme.

executemany() Dezimale Umrechnungsfehler beinhalteten Parameterwerte

Ein Dezimal-Konvertierungsfehler meldete executemany() den beanstandenden Wert über die kettegebundene Ausnahme, die Kundendaten in Anwendungsprotokollen und Überwachungssystemen speichern konnte. Der Fehler meldet nun nur noch den Zeilenindex, den Spaltenindex und den Werttyp.

Weitere Informationen finden Sie unter Fehlerbehandlung.

Massenkopie, abgelehnte Arrow-View-Typen

bulkcopy_arrow() konnte keine variabel langen Arrow View-Arrays verbrauchen, daher mussten zuerst Polars-Spalten string_view umgewandelt DataFrame.to_arrow() werden. String-View-Werte und NULLs passieren nun direkt über die Arrow C Data Interface.

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 ODBC-Treiberbinäre werden 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-depsinstallierst, oder von einem privaten Index, der es nicht spiegelt.

Weitere Informationen finden Sie unter Installation.

Massenkopie von 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. Führt man eine Arrow-Quelle zu bulkcopy() Now , erhebt TypeErrorman .

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 sich gegenseitig mit dem Authentication Schlüsselwort und den durchgereichten attrs_beforeToken aus und unterstützt nur den kommerziellen Cloud-Bereich von Azure.

Weitere Informationen finden Sie unter Microsoft Entra-Authentifizierung.

Identitätsbewusstes Verbindungspooling

Der Verbindungspool trennt Verbindungen nun nach Microsoft Entra-Identität. 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 null Zeilen ein, wenn NULLs nach der ersten Zeile erschienen

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 nun nur noch, wenn der zugeordnete Python-Typ der Spalte oder bytesiststr.

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

Konverter, die mit einem ganzzahligen SQL-Code wie registriert sind, SQL_DECIMALwurden gespeichert, aber nie aufgerufen, weil der Treiber nur auf dem Python-Typ in dispatchedcursor.description. 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 zugewiesen und den Elternteil Cursor in einem inkonsistenten Zustand, weil cursor.arrow_reader() ein rohes pyarrow.RecordBatchReaderErgebnis zurückgegeben wurde. 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 wurde in AttributeErrorCursor.__del__

Ein Cursor, dessen Initialisierer fehlschlug, hat während der Garbage Collection ein AttributeError als unerreichbare Ausnahme ausgelöst.

Cursor.__init__ hob auf, bevor es die closed und-attribute hstmt gesetzt hat, die __del__ dann versucht haben, sie zu lesen. 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 Begleitpaket damit installiert wird. Der native Loader bevorzugt das Begleitpaket und greift auf die im Rad enthaltenen mssql-python Binärdateien zurück, wenn es 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 der übergeordneten Verbindung, die man mit connect(..., timeout=<seconds>)setzt. 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 erstellte Elternverbindung timeout=0 erhält weiterhin die 15-Sekunden-Standard.

Weitere Informationen finden Sie unter Massenkopie.

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

cursor.bulkcopy()zuvor gescheitert mit Protocol Error: Unsupported TDS type for bulk copy: 0xF0 für jede Zielspalte, die einen benutzerdefinierten Laufzeittyp Common Language (CLR) verwendete, einschließlich der integrierten Typen Geographie, Geometrie und Hierarchie. 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 wird in mssql_py_core 0.1.7 veröffentlicht.

Weitere Informationen finden Sie unter Bulk copy und Data Type Mappings.

mssql-python 1.11.0

Veröffentlichungsdatum: Juli 2026

Enhancements

Verbesserte Kontextmanager-Semantik

with connection: now commit die Transaktion, wenn der Block sauber verendet, und rollt sie zurück, wenn eine Ausnahme den Block verlässt.

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 Authentication=ActiveDirectoryServicePrincipaljetzt , sodass man mit Service-Principal-Zugangsdaten massenhaft einfügen kann.

Weitere Informationen finden Sie unter Massenkopie 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 Massenkopie 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 Handhabung der UTF-16 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 behoben, sodass sie DB-API Ausnahmen RuntimeErrorstatt auslösen mssql_python .
  • 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 Sanierung von Verbindungsstrings verwendet jetzt einen Parser statt regulärer Ausdrücke, sodass Verbindungszeichen, die spezielle Zeichen in Passwortfeldern und abgestützte Werte enthalten, korrekt parsen.

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

Hochleistungs-Bulk-Datenladen 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 Massenkopie.

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 erforschen Datenbankmetadaten: , , , primaryKeys(), foreignKeys()procedures(), statistics(), , und getTypeInfo(). columns()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.