Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varje version av mssql-python-drivrutinen introducerar nya funktioner, prestandaförbättringar och buggfixar. Följande avsnitt beskriver varje version.
mssql-python 1.11.0
Releasedatum: juli 2026
Enhancements
Förbättrad semantik för kontexthanterare
with connection: bekräftar nu korrekt transaktioner vid korrekt avslut och rullar tillbaka dem vid undantag, vilket gör det mer Pythoniskt och förutsägbart.
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
Felkorrigeringar
- Åtgärdade en GIL-deadlock i ODBC:s avvecklingsväg (
conn.close()ochcursor.close()) och iSQLDescribeParamför parametrar med värdetNonei konfigurationer med SSH-tunnel och vidarebefordrare i processen. - Fasta
BINARYochVARBINARYNULL-parametrar i temporära tabeller och tabellvariabler. När automatisk typupplösning misslyckas genererar drivrutinen nu en varning i Python med tydligcursor.setinputsizes()vägledning. - Fixade
import mssql_pythonfel 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ådearm64- ochx86_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, vilket möjliggör massinfogningar med autentiseringsuppgifter för tjänstens huvudnamn.
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")
Felkorrigeringar
- Åtgärdade data som inte är i ASCII-format för
VARCHARochCHARi 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.
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")
Felkorrigeringar
- Fast hjulpaketering så
simdutfdet är alltid statiskt kopplat. - Åtgärdade stora
DECIMALinfogningar iexecutemany(). - 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ållerPRINTmeddelanden mellan resultatuppsättningar. - Åtgärdade hanteringen av
Rowi reservvägen för data-at-execution iexecutemany(). - Å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.
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")
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.
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
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
Denna version lägger till RHEL 8-kompatibla hjul, återställer macOS Python 3.10-hjuluniversal2, förbättrar UTF-16-hanteringen genom simdutf, och optimerar execute() hot path.
Prestandapåverkan: Batch-exekveringsgenomströmningen förbättras med ~15% på typiska arbetsbelastningar tack vare hot path-optimeringar i metoden execute() .
Felkorrigeringar
- Åtgärdade inloggningsfel så att de utlöser
mssql_pythonDB-API-undantag i stället förRuntimeError. - 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
VARCHARmellan plattformar. - Åtgärdade
cursor.bulkcopy()fel för tomma strängar iNVARCHAR(MAX)ochVARCHAR(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
Denna förbättring säkerställer korrekt tolkning av specialtecken i lösenordsfält och förstärkta värden.
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"
)
Rensning av anslutningssträngar flyttades från regex-baserad logik till parser-baserad bearbetning för korrekt hantering av ODBC-anslutningssträngssyntax.
Felkorrigeringar
- Åtgärdade GIL-frigörelse vid blockerande ODBC-anslutnings- och frånkopplingsåtgärder.
- Fixade
setinputsizes()krascher medSQL_DECIMALochSQL_NUMERICledtrådar. - Korrigerade felaktigt
fetchone()beteende för ODBC-katalogmetoder. - Åtgärdade fel med ogiltigt markörtillstånd när
reset_cursor=Falseanvä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 komplettpyarrow.Table. -
cursor.arrow_batch()returnerar en endapyarrow.RecordBatch. -
cursor.arrow_reader()returnerar enpyarrow.RecordBatchReaderför strömning.
Implementeringen kringgår Python-objektskapande i hot path för förbättrad prestanda. 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.
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 den på modulnivå eller per anslutning:
# 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)
För mer information, se Modulkonfiguration.
Radklass offentlig export
Klassen Row exporteras nu på högsta nivå för typannotationer:
from mssql_python import Row
Felkorrigeringar
- Åtgärdade felaktig identifiering av
?i hakparentesomslutna identifierare, strängliteraler och kommentarer. - Fixerad NULL-parameterbindning för
VARBINARYkolumner (ger inte längre implicita konverteringsfel). - Åtgärdade att
datetime.time-värden förlorade mikrosekunder vid tur- och returkonvertering för kolumner frånTIME(1)tillTIME(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: mars 2025
Nya funktioner
Stöd för masskopiering
Högpresterande bulkdataladdning finns nu tillgänglig genom 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")
Metoden accepterar alternativ för batch_size, , , timeout, column_mappings, keep_identity, check_constraintstable_lock, , keep_nulls, och fire_triggersuse_internal_transaction.
Se Masskopiering för fullständig dokumentation.
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 2025
Nya funktioner
Inställningsklass
Konfigurera modulövergripande beteende genom den nya Settings klassen:
import mssql_python
settings = mssql_python.get_settings()
settings.lowercase = True # Lowercase column names in cursor.description
Se Modulkonfiguration för detaljer.
Improvements
- Bättre hantering av anslutningstidsavbrott under Azure SQL-failover.
- Förbättrad kompatibilitet med Python 3.13.
mssql-python 1.2.0
Releasedatum: november 2024
Nya funktioner
Metoder för schemaupptäckt
Nya markörmetoder för databasmetadatautforskning:
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()
Se Schema-upptäckt för fullständig dokumentation.
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
Releasedatum: september 2024
Nya funktioner
Specialanpassade utgångsomformere
Registrera anpassade funktioner för att transformera kolumnvärden under hämtning:
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)
Hanteringsmetoder:
add_output_converter(sql_type, converter_func)get_output_converter(sql_type)remove_output_converter(sql_type)clear_output_converters()
För fullständig dokumentation, se Anpassade typkonverterare.
Improvements
- Bättre felmeddelanden vid misslyckade typkonverteringar.
- Stöd för omvandlarfunktioner som returnerar
None.
mssql-python 1.0.0
Releasedatum: juli 2024
Första GA-versionen
Den första allmänna tillgänglighetsversionen av mssql-python, Microsoft inbyggda Python-drivrutin för SQL Server.
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(), ochbatch_execute(). - Kopplingsattribut genom
set_attr()ochgetinfo(). - Stöd för kontexthanterare.
Markörfunktioner
- Standardmetoder för hämtning:
fetchone(),fetchmany(),fetchall(). - Utökade metoder:
fetchval(),skip(). - Exekveringsmetoder:
execute()ochexecutemany(). - 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ändEXECUTE-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
%soch%dparametermarkö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.