Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Elke release van de mssql-python-driver introduceert nieuwe functies, prestatieverbeteringen en bugfixes. De volgende secties beschrijven elke versie.
mssql-python 1.11.0
Releasedatum: juli 2026
Enhancements
Verbeterde contextmanager-semantiek
with connection: bevestigt transacties nu correct bij een normale afsluiting en draait ze terug als er een uitzondering optreedt, waardoor het gedrag meer in lijn is met Python en voorspelbaarder wordt.
import mssql_python
# On clean exit, transaction commits
with mssql_python.connect(connection_string) as conn:
cursor = conn.cursor()
cursor.execute("INSERT INTO MyTable (Name) VALUES ('Alice')")
# Automatically committed on exit
# On exception, transaction rolls back
try:
with mssql_python.connect(connection_string) as conn:
cursor = conn.cursor()
cursor.execute("INSERT INTO MyTable (Name) VALUES ('Bob')")
raise ValueError("Oops!")
except ValueError:
pass
# Changes rolled back on exit
Fouten opgelost
- Een GIL-deadlock in het ODBC-afbouwpad (
conn.close()encursor.close()) en inSQLDescribeParamvoor parameters met de waardeNonein SSH-tunnel- en in-process-forwarderconfiguraties opgelost. - Vaste
BINARYenVARBINARYNULL-parameters in tijdelijke tabellen en tabelvariabelen. Wanneer automatische typeresolutie faalt, geeft de driver nu een Python-waarschuwing met explicietecursor.setinputsizes()richtlijnen. - Probleem opgelost waarbij
import mssql_pythonfaalde op Apple Silicon bij een schone installatie (regressie in 1.8.0). De gebundelde ODBC dylib-afhankelijkheden zijn nu herschreven voor zowelarm64enx86_64architecturen. - Er is een GIL-deadlock in de Rust-kern opgelost waardoor bulkkopieën vastliepen bij authenticatie met
Authentication=ActiveDirectoryServicePrincipal.
mssql-python 1.10.0
Releasedatum: juni 2026
Enhancements
ActiveDirectoryServicePrincipal-ondersteuning voor bulkkopieën
cursor.bulkcopy() ondersteunt nu Authentication=ActiveDirectoryServicePrincipal, waardoor bulkinserts mogelijk zijn door gebruik te maken van Service Principal-credentials.
import mssql_python
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryServicePrincipal;"
"UID=<application-client-id>;"
"PWD=<client-secret>;"
"Encrypt=yes"
)
cursor = conn.cursor()
cursor.execute("CREATE TABLE ##SpDemo (ID INT, Value FLOAT)")
conn.commit()
result = cursor.bulkcopy("##SpDemo", [(1, 1.5), (2, 2.5)])
print(f"Copied {result['rows_copied']} rows")
Fouten opgelost
- Problemen met niet-ASCII-gegevens in het Arrow-ophaalpad voor
VARCHARenCHARzijn opgelost. - Vaste verbindingstime-outs tijdens bulkbelasting.
mssql-python 1.9.0
Releasedatum: juni 2026
Enhancements
Rijobjecten bulkkopiëren
cursor.bulkcopy() accepteert nu direct gehaalde Row objecten in plaats van handmatige tuple-conversie te vereisen.
import mssql_python
conn = mssql_python.connect(connection_string)
cursor = conn.cursor()
# Fetch rows from source table
cursor.execute("SELECT ProductID, Name, ListPrice FROM Production.Product")
rows = cursor.fetchall()
# Pass fetched Row objects directly to bulkcopy
cursor.execute("CREATE TABLE ##RowBulkDemo (ProductID INT, Name NVARCHAR(50), ListPrice MONEY)")
conn.commit()
result = cursor.bulkcopy("##RowBulkDemo", rows)
print(f"Copied {result['rows_copied']} rows")
Fouten opgelost
- Vaste wielverpakking, dus
simdutfaltijd statisch gekoppeld. - Grote inserts opgelost in
executemany(). - Onjuiste typefallback voor NULL-parameters opgelost.
- Vaste uitzonderingen voor pickle en unpickle retourritten.
- Probleem opgelost in
nextset(), zodatPRINT-berichten tussen resultaatsets heen behouden blijven. - Probleem met de afhandeling van
Rowopgelost in het fallback-pad voorexecutemany()data-at-execution. - Vaste typecontrole van de fetch-methode voor statische analysetools.
mssql-python 1.8.0
Releasedatum: mei 2026
Enhancements
ActiveDirectoryMSI-ondersteuning voor bulkkopieën
cursor.bulkcopy() ondersteunt nu Authentication=ActiveDirectoryMSI voor door het systeem toegewezen en door de gebruiker toegewezen beheerde identiteiten.
import mssql_python
# System-assigned managed identity
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryMSI;"
"Encrypt=yes"
)
cursor = conn.cursor()
cursor.execute("CREATE TABLE ##MsiDemo (ID INT, Name NVARCHAR(50))")
conn.commit()
result = cursor.bulkcopy("##MsiDemo", [(1, "Alice"), (2, "Bob")])
print(f"Copied {result['rows_copied']} rows")
Rijindexering met tekenreekssleutel
Je kunt nu rijwaarden bijvoorbeeld op kolomnaam row["col"]benaderen , naast positionele indexering en attribuuttoegang.
import mssql_python
conn = mssql_python.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SELECT ProductID, Name, ListPrice FROM Production.Product WHERE ProductID = 1")
row = cursor.fetchone()
# Access by column name (new in 1.8.0)
print(row["ProductID"]) # Access by key
print(row["Name"])
# Still supports positional indexing
print(row[0]) # Positional access
# And attribute access
print(row.Name) # Attribute access
Upgrade van de meegeleverde ODBC-driver
De meegeleverde Microsoft ODBC-driver voor SQL Server werd bijgewerkt naar 18.6.2.1.
Fouten opgelost
- Problemen met de levensduur van het uitgestelde verbindingsattribuut in tokengebaseerde authenticatie opgelost.
- Herhaald parseren van verbindingsreeksen in het authenticatiepad is opgelost.
- Vaste
executemany()type annotaties voor sequentie-invoer.
mssql-python 1.7.1
Releasedatum: mei 2026
Enhancements
Uitgebreide wieldekking en prestatieverbeteringen
Deze release voegt RHEL 8-compatibele wielen toe, herstelt macOS Python 3.10 universal2 wielen, verbetert de UTF-16 handling via simdutf, en optimaliseert het execute() hot path.
Prestatie-impact: De batchuitvoeringsdoorvoer verbetert met ~15% op typische workloads door hot path-optimalisaties in de execute() methode.
Fouten opgelost
- Fouten bij het aanmelden opgelost, zodat deze
mssql_pythonDB-API-uitzonderingen genereren in plaats vanRuntimeError. - Verlengde GIL-release over het blokkeren van ODBC-uitvoering, fetch, transactie en verbindingsattribuutaanroepen.
- Problemen met
executemany()opgelost wanneer decimale waarden van teken veranderen. - Inconsistente decodering van CP1252
VARCHARop verschillende platforms opgelost. -
cursor.bulkcopy()-fouten voor lege tekenreeksen in kolommenNVARCHAR(MAX)enVARCHAR(MAX)opgelost.
Opmerking
Versie 1.7.0 werd ingetrokken vanwege publicatieproblemen. Gebruik versie 1.7.1 of later.
mssql-python 1.6.0
Releasedatum: april 2026
Enhancements
Op parser gebaseerde opschoning van verbindingsreeksen
Deze verbetering zorgt voor correcte parsing van speciale tekens in wachtwoordvelden en versterkte waarden.
import mssql_python
# Complex passwords with special characters now parse correctly
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"UID=user@contoso;"
"PWD={p@ssw0rd;with{braces}};" # Braced values now handled correctly
"Encrypt=yes"
)
Connection string sanitization is overgestapt van regex-gebaseerde logica naar parser-gebaseerde verwerking voor correcte afhandeling van ODBC-verbindingsreeks-syntaxis.
Fouten opgelost
- GIL-release gerepareerd tijdens het blokkeren van ODBC-verbindingen en -ontkoppelingen.
- Crashproblemen met
setinputsizes()enSQL_DECIMALhintsSQL_NUMERICopgelost. - Onjuist
fetchone()gedrag voor ODBC-catalogusmethoden is gecorrigeerd. - Fouten met een ongeldige cursorstatus opgelost wanneer
reset_cursor=Falsewordt gebruikt. - Vaste
executemany()type hints voor mapping-gebaseerde parameterreeksen. - Een paddoorloopbeveiliging toegevoegd voor
setup_logging(log_file_path=...).
mssql-python 1.5.0
Releasedatum: april 2026
Nieuwe functies
Ondersteuning voor het ophalen van Apache Arrow
Drie nieuwe cursormethoden bieden hoogpresterende kolomgegevensopvraging via de Arrow C Data Interface:
-
cursor.arrow()geeft een volledigepyarrow.Tableterug. -
cursor.arrow_batch()geeft een enkelepyarrow.RecordBatchterug. -
cursor.arrow_reader()geeft eenpyarrow.RecordBatchReaderterug voor streaming.
De implementatie omzeilt het aanmaken van Python-objecten in het hot path voor betere prestaties. Voor volledige documentatie, zie Apache Arrow-integratie.
ondersteuning voor het type sql_variant
De driver detecteert sql_variant nu kolommen tijdens het ophalen, lost hun onderliggende basistype op en levert correct getypte Python-waarden terug in plaats van ruwe bytes.
Opmerking
sql_variant kolommen gebruiken een streaming-ophaalpad, wat de prestaties enigszins kan beïnvloeden in vergelijking met kolommen met een vast type.
Ingebouwde UUID-ondersteuning
Een nieuwe native_uuid instelling bepaalt of UNIQUEIDENTIFIER kolommen worden teruggegeven als uuid.UUID objecten (standaard) of als pyodbc-compatibele hoofdletterstrings. Configureer het op moduleniveau of per verbinding:
# Module-level default
settings = mssql_python.get_settings()
settings.native_uuid = True # default
# Per-connection override
conn = mssql_python.connect(connection_string, native_uuid=False)
Voor meer informatie, zie Moduleconfiguratie.
Rijklasse openbare export
De Row klasse wordt nu op het hoogste niveau geëxporteerd voor type-annotaties:
from mssql_python import Row
Fouten opgelost
- Opgelost: onjuiste detectie van
?binnen tussen vierkante haken geplaatste identifiers, stringliteralen en commentaar. - Vaste NULL-parameterbinding voor
VARBINARYkolommen (veroorzaakt geen impliciete conversiefouten meer). - Vaste
datetime.timewaarden waarbij microseconden verloren gaan bij retouren voorTIME(1)doorgaandeTIME(7)kolommen. - Ophaalpad voor Arrow gecorrigeerd zodat fracties van seconden correct worden opgenomen voor
TIME-kolommen. - Opgeloste bulkkopie met Microsoft Entra ID-authenticatiemethoden (verouderde inloggegevens veroorzaken geen validatiefouten meer).
- Azure Identity-credential-instanties op moduleniveau gecachet voor verbeterde authenticatieprestaties.
mssql-python 1.4.0
Releasedatum: maart 2025
Nieuwe functies
Ondersteuning voor bulkkopieën
Snel bulkladen van gegevens is nu beschikbaar via cursor.bulkcopy():
import mssql_python
conn = mssql_python.connect(connection_string)
cursor = conn.cursor()
cursor.execute("CREATE TABLE ##BulkDemo (ID INT, Name NVARCHAR(50), Price DECIMAL(10,2))")
conn.commit()
data = [
(1, "Item 1", 10.50),
(2, "Item 2", 20.75),
# ... potentially millions of rows
]
result = cursor.bulkcopy("##BulkDemo", data)
print(f"Copied {result['rows_copied']} rows")
De methode accepteert opties voor batch_size, timeout, , column_mappings, keep_identity, check_constraints, table_lockkeep_nulls, , fire_triggers, en use_internal_transaction.
Zie Bulk copy voor volledige documentatie.
Improvements
- Prestatieoptimalisaties voor grote resultatensets.
- Verminderd geheugengebruik tijdens batchbewerkingen.
- Verbeterde foutmeldingen voor mislukte bulk-kopieeracties.
mssql-python 1.3.0
Releasedatum: januari 2025
Nieuwe functies
Settings-klasse
Configureer module-breed gedrag via de nieuwe Settings klasse:
import mssql_python
settings = mssql_python.get_settings()
settings.lowercase = True # Lowercase column names in cursor.description
Zie Moduleconfiguratie voor details.
Improvements
- Betere afhandeling van verbindingstimeout tijdens Azure SQL failover.
- Verbeterde compatibiliteit met Python 3.13.
mssql-python 1.2.0
Releasedatum: november 2024
Nieuwe functies
Methoden voor schema-ontdekking
Nieuwe cursormethoden voor het verkennen van metadata in databases:
cursor = conn.cursor()
# List all tables
cursor.tables(schema="dbo")
# Get column information
cursor.columns(table="Product", schema="Production")
# Get primary keys
cursor.primaryKeys(table="Product", schema="Production")
# Get foreign key relationships
cursor.foreignKeys(table="SalesOrderDetail", schema="Sales")
# Get stored procedures
cursor.procedures(schema="dbo")
# Get index statistics
cursor.statistics(table="Product", schema="Production")
# Get type information
cursor.getTypeInfo()
Zie Schema-ontdekking voor volledige documentatie.
Improvements
- Verbeterde metadata-caching voor herhaalde schema-query's.
- Betere verwerking van berekende kolommen in
columns()-resultaten.
mssql-python 1.1.0
Releasedatum: september 2024
Nieuwe functies
Aangepaste uitgangsomzetters
Registreer aangepaste functies om kolomwaarden te transformeren tijdens het ophalen:
import mssql_python
from decimal import Decimal
conn = mssql_python.connect(connection_string)
# Convert decimals to float (converter receives Decimal)
def decimal_to_float(value):
if value is None:
return None
return float(value) # value is already a Decimal object
conn.add_output_converter(mssql_python.SQL_DECIMAL, decimal_to_float)
# Custom money formatting
def format_money(value):
if value is None:
return "$0.00"
return f"${float(value):,.2f}" # value is already a Decimal object
conn.add_output_converter(mssql_python.SQL_DECIMAL, format_money)
Beheermethoden:
add_output_converter(sql_type, converter_func)get_output_converter(sql_type)remove_output_converter(sql_type)clear_output_converters()
Voor volledige documentatie, zie Custom type converters.
Improvements
- Betere foutmeldingen voor mislukte typeconversies.
- Ondersteuning voor converterfuncties die
Noneretourneren.
mssql-python 1.0.0
Releasedatum: juli 2024
Eerste GA-release
De eerste algemene beschikbaarheidsrelease van mssql-python, Microsoft's native Python-driver voor SQL Server.
Kernfuncties
- DDBC-architectuur: Directe databaseconnectiviteit zonder ODBC-driverinstallatie te vereisen.
- DB-API 2.0-conformiteit: Standaard Python database-interface.
- Verbindingspooling: Ingebouwd beheer van de verbindingspool.
- Microsoft Entra-authenticatie: Volledige ondersteuning voor Azure-identiteitsgebaseerde authenticatie.
- TLS-encryptie: Beveiligde verbindingen met certificaatvalidatie.
Verbindingsmogelijkheden
- 21 verbindingsreeks-zoekwoorden.
- 9 authenticatiemodi (SQL, Windows en 7 Microsoft Entra ID-methoden).
- Autocommitbeheer.
- Uitvoeringsmethoden:
execute(),executemany(), enbatch_execute(). - Verbindingsattributen via
set_attr()engetinfo(). - Ondersteuning voor contextmanagers.
Cursorkenmerken
- Standaard fetchmethoden:
fetchone(),fetchmany(), .fetchall() - Uitgebreide methoden:
fetchval(),skip(). - Uitvoeringsmethoden:
execute()enexecutemany(). - Rijobjecten met attribuut- en indextoegang.
- Navigatie met meerdere resultaatsets met
nextset().
Ondersteuning voor gegevenstypen
- Alle systeemeigen typen van SQL Server.
- Python↔SQL-typetoewijzingen.
- SQL-typeconstanten voor expliciete typering (bijvoorbeeld,
mssql_python.SQL_DECIMAL). - NULL-afhandeling als Python
None.
Transactieondersteuning
- Handmatig vastleggen en terugdraaien.
- Autocommit-modus.
- Isolatieniveaucontrole.
- Deadlock-detectie en -hantering.
Verificatiemodi
| Mode | Beschrijving |
|---|---|
| SQL Server-authenticatie | Gebruikersnaam en wachtwoord |
| Windows authentication | Trusted_Connection |
| ActiveDirectoryDefault | DefaultAzureCredential |
| ActiveDirectoryInteractive | Browsergebaseerde aanmelding |
| ActiveDirectoryDeviceCode | Apparaatcodestroomproces |
| ActiveDirectoryPassword | Microsoft Entra gebruikersnaam en wachtwoord (verouderd; gebruikt ROPC) |
| ActiveDirectoryMSI | Beheerde identiteit |
| ActiveDirectoryServicePrincipal | Service Principal |
| ActiveDirectoryIntegrated | Windows Kerberos |
Upgrade
Afkomstig van pyodbc
Voor gedetailleerde migratierichtlijnen, zie Migreren van pyodbc.
Belangrijkste verschillen:
- Zowel
?(qmark) als%(name)s(pyformat) parameterstijlen worden ondersteund. Je bestaande?queries werken zonder wijzigingen. - Geen methode
callproc(). GebruikEXECUTEin plaats daarvan statements. - Ingebouwde verbindingspooling.
- Geen externe ODBC-driverafhankelijkheid.
Uit pymssql
Voor gedetailleerde migratierichtlijnen, zie Migreren van pymssql.
Belangrijkste verschillen:
- Vervang de parameteraanduidingen
%sen%ddoor?of%(name)s. - Gebruik een verbindingsreeks in plaats van positionele argumenten.
- Geen FreeTDS-afhankelijkheid.
- Meerdere gelijktijdige cursors per verbinding.
- Rijobjecten met attribuuttoegang vervangen
as_dict=True.
Tussen versies van mssql-python
Upgrade de driver om nieuwe functies en oplossingen te krijgen.
pip install --upgrade mssql-python
Bekijk de release notes op eventuele breaking changes voordat je de productiesystemen upgradet.
Roadmap
Voor aankomende functies en de ontwikkelingsroute, zie de GitHub-repository.