Mi újság az mssql-pythonban

Az mssql-python illesztőprogramjának minden kiadása új funkciókat, teljesítményjavításokat és hibajavításokat kínál. Az alábbi részek részletezik az összes verziót.

MSSQL-python 1.11.0

Megjelenési dátum: 2026. július

Fejlesztések

Javított kontextuskezelő szemantika

with connection: most már megfelelően véglegesíti a tranzakciókat tiszta kilépéskor, és kivétel esetén visszagörgeti őket, így inkább a Python szellemiségéhez igazodik és kiszámíthatóbbá válik.

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

Hibajavítások

  • Javítottunk egy GIL-holtpontot az ODBC leépítési útvonalán (conn.close() és cursor.close()), valamint a(z) SQLDescribeParam esetében a None értékű paramétereknél SSH-alagutas és folyamaton belüli továbbító konfigurációkban.
  • Fix BINARY és VARBINARY NULL paraméterek a temp táblákban és tábváltozókban. Amikor az automatikus típusfelbontás meghibásodik, az illesztőprogram most Python figyelmeztetést ad ki explicit cursor.setinputsizes() útmutatással.
  • Javítottam import mssql_python az Apple Silicon hibáját tiszta telepítéssel (regresszió az 1.8.0-ban). A csomagban lévő ODBC dylib függőségeket most mindkettő arm64 és x86_64 az architektúra számára is újraírják.
  • Kijavítottunk egy, a Rust-alapú magban jelentkező GIL miatti holtzárat, amely miatt a tömeges másolási műveletek lefagytak a(z) Authentication=ActiveDirectoryServicePrincipal használatával történő hitelesítéskor.

MSSQL-python 1.10.0

Kiadás dátuma: 2026. június

Fejlesztések

ActiveDirectoryServicePrincipal támogatása tömeges másoláshoz

cursor.bulkcopy() Most már támogatja Authentication=ActiveDirectoryServicePrincipal, lehetővé teszi a tömeges beillesztéseket a szolgáltatásfő hitelesítő adatok használatával.

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")

Hibajavítások

  • Javítva lettek a nem ASCII VARCHAR és CHAR adatok az Arrow lekérési útvonalán.
  • Fix csatlakozási időkorlátok a tömeges terhelési műveletek során.

MSSQL-python 1.9.0

Kiadás dátuma: 2026. június

Fejlesztések

Sorobjektumok tömeges másolás során

cursor.bulkcopy() most már közvetlenül elfogadja a lekért Row objektumokat, ahelyett hogy megkövetelné a tuple-ök kézi átalakítását.

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")

Hibajavítások

  • Fix kerekes csomagolás, így simdutf mindig statikus összekötött.
  • Kijavítottuk a nagy DECIMAL beszúrásokat a következőben: executemany()
  • Javítva a hibás típus-visszaállítás a NULL paraméterek esetén.
  • Javított kivételes savanyúságos és kioldó oda-vissza utak.
  • Kijavítottuk a(z) nextset() elemet, így a PRINT üzenetek megmaradnak az eredményhalmazok között.
  • Javítottuk a Row kezelését a executemany() végrehajtáskori adat-visszaesési útvonalán.
  • Javítottuk a fetch metódus típusellenőrzését a statikus kódelemző eszközök számára.

MSSQL-python 1.8.0

Kiadás dátuma: 2026. május

Fejlesztések

ActiveDirectoryMSI támogatás a tömeges másoláshoz

cursor.bulkcopy() Most már támogatja Authentication=ActiveDirectoryMSI a rendszer által hozzárendelt és felhasználó által hozzárendelt menedzselt identitásokat.

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")

Karakterlánc-kulcsú sorindexelés

Most már oszlopnév alapján is elérheted a sorértékeket, például row["col"], a pozíciós indexelés és attribútum-hozzáférés mellett.

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

A csomagban található ODBC-illesztőprogram frissítése

A mellékelt Microsoft ODBC Driver for SQL Server frissítették 18.6.2.1-re.

Hibajavítások

  • Kijavították a tokenalapú hitelesítésben a halasztott connect-attribútum élettartamával kapcsolatos problémákat.
  • Javítottam a hitelesítési útvonalon ismételt ismételt kapcsolati karakterlánc parzálást.
  • Fix executemany() típusú annotációk a szekvencia bemenetekhez.

MSSQL-python 1.7.1

Kiadás dátuma: 2026. május

Fejlesztések

Bővített kerékfedés és teljesítményfejlesztések

Ez a kiadás RHEL 8-kompatibilis wheel csomagokat ad hozzá, visszaállítja a macOS-hez készült Python 3.10-es universal2 wheel csomagokat, javítja az UTF-16 kezelését a(z) simdutf révén, és optimalizálja a execute() kritikus végrehajtási útvonalát.

Teljesítményhatás: A köteg végrehajtási áteresztőképesség ~15%-vel javul tipikus munkaterhelésekhez képest a módszer forró útoptimalizálása execute() miatt.

Hibajavítások

  • Kijavították a bejelentkezési hibák kezelését, így azok mostantól mssql_python DB-API kivételeket váltanak ki RuntimeError helyett.
  • Kiterjesztett GIL kiadás az ODBC végrehajtási, betöltési, tranzakciós és kapcsolati attribútumhívások blokkolására.
  • Kijavították a executemany() hibákat, amikor a tizedes értékek előjelet váltanak.
  • Javították a CP1252 VARCHAR inkonzisztens dekódolását a platformok között.
  • Kijavították a(z) NVARCHAR(MAX) és VARCHAR(MAX) oszlopokban előforduló üres karakterláncok miatti cursor.bulkcopy() hibákat.

Megjegyzés:

Az 1.7.0 verziót kivonásra került a kiadási problémák miatt. Használd az 1.7.1-es vagy újabb verziót.

MSSQL-python 1.6.0

Kiadás dátuma: 2026. április

Fejlesztések

Elemzőalapú kapcsolati karakterlánc-megtisztítás

Ez a fejlesztés biztosítja a jelszómezők speciális karaktereinek és a rögzített értékek helyes elemzését.

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"
)

A kapcsolati karakterlánc megtisztítása a regexalapú logikáról elemzőalapú feldolgozásra állt át az ODBC-kapcsolati karakterlánc szintaxisának helyes kezelése érdekében.

Hibajavítások

  • Kijavították a GIL felszabadítását a blokkoló ODBC-kapcsolódási és -bontási műveletek során.
  • Kijavítottuk a SQL_DECIMAL és SQL_NUMERIC tippekkel kapcsolatos setinputsizes() összeomlásokat.
  • Javítottam az ODBC katalógus módszereinek hibás fetchone() viselkedését.
  • Kijavítottuk az érvénytelen kurzorállapotból eredő hibákat a reset_cursor=False használatakor.
  • Fix executemany() típusú tippek leképezés-alapú paramétersorozatokhoz.
  • Útvonal-bejárás elleni védelem hozzáadva a(z) setup_logging(log_file_path=...) elemhez.

MSSQL-python 1.5.0

Kiadás dátuma: 2026. április

Új funkciók

Apache Arrow lekérési támogatás

Három új kurzormódszer biztosít nagy teljesítményű oszlopos adatkeresést az Arrow C adatinterfészen keresztül:

  • cursor.arrow() egy teljes pyarrow.Tableértéket ad vissza.
  • cursor.arrow_batch() egyetlen pyarrow.RecordBatch elemet ad vissza.
  • cursor.arrow_reader() egy pyarrow.RecordBatchReader objektumot ad vissza a streameléshez.

A megvalósítás a teljesítmény javítása érdekében megkerüli a Python-objektumok létrehozását a kritikus végrehajtási útvonalon. A teljes dokumentációért lásd: Apache Arrow integráció.

sql_variant típusú támogatás

A meghajtó most sql_variant már a lekéréskor észleli az oszlopokat, feloldja azok alaptípusát, és helyesen gépelt Python értékeket ad vissza nyers bájtok helyett.

Megjegyzés:

sql_variant Az oszlopok egy streaming fetch útvonalat használnak, ami enyhe teljesítményhátrányt okozhat a fix típusú oszlopokhoz képest.

Natív UUID támogatás

Egy új native_uuid beállítás azt szabályozza, hogy a UNIQUEIDENTIFIER oszlopok uuid.UUID objektumokként (alapértelmezés szerint) vagy pyodbc-kompatibilis, csupa nagybetűs karakterláncokként kerülnek-e visszaadásra. Konfiguráld modul szinten vagy minden kapcsolaton:

# 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)

További információért lásd: Modul konfiguráció.

Sor osztálya publikus export

Az Row osztály most a felső szinten exportálható típusannotációkhoz:

from mssql_python import Row

Hibajavítások

  • Kijavítottuk a ? hamis pozitív észlelését zárójelek közé tett azonosítókban, karakterlánc-literálokban és megjegyzésekben.
  • Rögzített NULL paraméterkötés oszlopokhoz VARBINARY (ami már nem okoz implicit átalakítási hibákat).
  • Kijavítva egy hiba, amely miatt a TIME(1) és TIME(7) közötti oszlopokban a datetime.time értékek oda-vissza konvertálás során elvesztették a mikroszekundumokat.
  • Fix nyíl bevonási útvonal, hogy helyesen tartalmazza a törtmásodperceket az TIME oszlopokhoz.
  • Javítottam a tömeges másolatot Microsoft Entra ID hitelesítési módszerekkel (az elavult credential mezők már nem okoznak ellenőrző hibákat).
  • Az Azure Identity hitelesítőadat-példányait modulszinten gyorsítótáraztuk a hitelesítési teljesítmény javítása érdekében.

MSSQL-python 1.4.0

Megjelenési dátum: 2025. március

Új funkciók

Tömeges másolattámogatás

A nagy teljesítményű tömeges adatbetöltés most már elérhető a következő módon 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")

A metódus a következőkhöz fogad el beállításokat: batch_size, timeout, column_mappings, keep_identity, check_constraints, table_lock, keep_nulls, fire_triggers és use_internal_transaction.

A teljes dokumentációért lásd a tömeges másolatot .

Improvements

  • Teljesítményoptimalizálás nagy eredményhalmazokhoz.
  • Csökkent memóriaigény a batch műveletek során.
  • Javított hibaüzenetek tömeges másolási hibákhoz.

mssql-python 1.3.0

Megjelenési dátum: 2025. január

Új funkciók

Beállítások osztály

Konfiguráld a modulszintű viselkedést az új Settings osztályon keresztül:

import mssql_python

settings = mssql_python.get_settings()
settings.lowercase = True       # Lowercase column names in cursor.description

Részletekért lásd a modul konfigurációt .

Improvements

  • A kapcsolat időtúllépésének jobb kezelése az Azure SQL átállása során.
  • Javított kompatibilitás a Python 3.13-mal.

MSSQL-python 1.2.0

Megjelenési dátum: 2024 november

Új funkciók

Sémafelfedezési módszerek

Új kurzormódszerek az adatbázis metaadat-kutatásához:

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()

A teljes dokumentációért lásd a Sémafelderítést.

Improvements

  • Fejlesztett metaadat-gyorsítótár ismétlődő séma lekérdezésekhez.
  • A kiszámított oszlopok jobb kezelése az columns() eredményekben.

MSSQL-python 1.1.0

Megjelenési dátum: 2024. szeptember

Új funkciók

Egyedi kimeneti konverterek

Regisztrálj egyedi függvényeket oszlopértékek átalakításához a betöltés során:

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)

Kezelési módszerek:

  • add_output_converter(sql_type, converter_func)
  • get_output_converter(sql_type)
  • remove_output_converter(sql_type)
  • clear_output_converters()

A teljes dokumentációért lásd: Egyedi típusú konverterek.

Improvements

  • Jobb hibaüzenetek típuskonverziós hibák esetére.
  • A None-t visszaadó konverterfüggvények támogatása.

MSSQL-python 1.0.0

Megjelenési dátum: 2024. július

Első általánosan elérhető kiadás

Az mssql-python első általános elérhetőségű kiadása, a Microsoft natív Python illezőprogramja az SQL Server-hez.

Alapvető funkciók

  • DDBC architektúra: Közvetlen adatbázis-csatlakozás ODBC illezser telepítés nélkül.
  • DB-API 2.0 megfelelőség: Szabványos Python adatbázis interfész.
  • Kapcsolatpoolozás: Beépített kapcsolatpool-kezelés.
  • Microsoft Entra hitelesítés: Teljes támogatás az Azure identitásalapú hitelesítéshez.
  • TLS titkosítás: Biztonságos kapcsolatok tanúsítvány ellenőrzéssel.

Kapcsolódási jellemzők

  • 21 kapcsolati karakterlánc-kulcsszó.
  • 9 hitelesítési mód (SQL, Windows és 7 Microsoft Entra ID módszer).
  • Automatikus elköteleződési kontroll.
  • Végrehajtási módszerek: execute(), executemany(), és batch_execute().
  • Kapcsolati attribútumok a következőn keresztül: set_attr() és getinfo().
  • Kontextuskezelő támogatás.

Kurzor funkciók

  • Szabványos behozási módszerek: fetchone(), fetchmany(), fetchall().
  • Kiterjesztett módszerek: fetchval(), skip().
  • Végrehajtási módszerek: execute() és executemany().
  • Sorobjektumok attribútum- és indexhozzáféréssel.
  • Navigálás több eredményhalmaz között a(z) nextset() használatával.

Adattípus támogatása

  • Minden SQL Server natív típus.
  • Python↔SQL típusleképezések.
  • SQL típus állandók explicit gépeléshez (például mssql_python.SQL_DECIMAL).
  • NULL kezelése Python szerint None.

Tranzakciótámogatás

  • Manuális elköteleződés és visszahúzás.
  • Automatikus véglegesítési mód.
  • Izolációs szint vezérlése.
  • Patthelyzet észlelése és kezelése.

Hitelesítési módok

Mode Leírás
SQL Server hitelesítés Felhasználónév és jelszó
Windows authentication Trusted_Connection
ActiveDirectoryDefault DefaultAzureCredential
ActiveDirectoryInteractive Böngészőalapú bejelentkezés
ActiveDirectoryDeviceCode Az eszközkód beolvasási folyamata
ActiveDirectoryPassword Microsoft Entra felhasználónév és jelszó (elavult; ROPC használja)
ActiveDirectoryMSI Felügyelt identitás
ActiveDirectoryServicePrincipal Szolgáltatási főelem
ActiveDirectoryIntegrated Windows Kerberos

Upgrade

pyodbc-től

Részletes migrációs útmutatóért lásd: Migrate from pyodbc.

Főbb különbségek:

  • Mind ? a (qmark), mind %(name)s a (pyformat) paraméterstílusok támogatottak. A meglévő ? lekérdezéseid változtatás nélkül működnek.
  • Nincs callproc() módszer. Használj EXECUTE helyette állításokat.
  • Beépített csatlakozási csoportosítás.
  • Nincs külső ODBC illezőprogramfüggőség.

A pymssql-ből

Részletes migrációs útmutatóért lásd: Migrate from pymssql.

Főbb különbségek:

  • A paraméterjelölőket %s%d vagy ?-re cseréljük%(name)s.
  • Használj kapcsolati karakterlánc-et pozíciós argumentumok helyett.
  • Nincs FreeTDS függőség.
  • Több egyidejű kurzor egy kapcsolatonként.
  • A as_dict=True helyébe attribútumelérésű sorobjektumok lépnek.

mssql-python verziók között

Frissítsd a meghajtót, hogy új funkciókat és javításokat kapj.

pip install --upgrade mssql-python

A produkciós rendszerek frissítése előtt ellenőrizd a kiadási megjegyzéseket az esetleges kompatibilitást megszakító változások miatt.

Roadmap

A közelgő funkciókról és a fejlesztési ütemtervről lásd a GitHub repozitóriumot.