mssql-python'da ne yenilikler var

mssql-python sürücüsünün her sürümü yeni özellikler, performans iyileştirmeleri ve hata düzeltmeleri getirir. Aşağıdaki bölümler her versiyonu detaylandırmaktadır.

mssql-python 1.11.0

Çıkış tarihi: Temmuz 2026

Geliştirmeler

Geliştirilmiş bağlam yöneticisi semantiği

with connection: artık işlemleri sorunsuz çıkışta doğru şekilde onaylar ve bir istisna durumunda geri alır; böylece davranışı Python’a daha uygun ve daha öngörülebilir olur.

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

Hata düzeltmeleri

  • ODBC kapatma yolunda (conn.close() ve cursor.close()) ve SSH tüneli ile süreç içi yönlendirici yapılandırmalarında, None değerine sahip parametreler için SQLDescribeParam içindeki GIL kilitlenmesi düzeltildi.
  • Geçici tablolarda ve tablo değişkenlerinde sabit BINARY ve VARBINARY NULL parametreler. Otomatik tip çözümlemesi başarısız olduğunda, sürücü artık açık cursor.setinputsizes() rehberlikle bir Python uyarısı gönderir.
  • Apple Silicon’da temiz kurulumda import mssql_python oluşan hata düzeltildi (1.8.0’daki bir regresyon). Paketlenmiş ODBC dylib bağımlılıkları artık hem arm64 hem de x86_64 mimariler için yeniden yazılmıştır.
  • Authentication=ActiveDirectoryServicePrincipal ile kimlik doğrulaması yapılırken toplu kopyalama işlemlerinin donmasına neden olan Rust çekirdeğindeki bir GIL kilitlenmesi giderildi.

mssql-python 1.10.0

Yayın tarihi: Haziran 2026

Geliştirmeler

ActiveDirectoryServicePrincipal toplu kopyalama desteği

cursor.bulkcopy() artık Authentication=ActiveDirectoryServicePrincipal destekliyor ve hizmet sorumlusu kimlik bilgilerini kullanarak toplu ekleme yapılmasına olanak tanıyor.

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

Hata düzeltmeleri

  • Arrow getirme yolundaki ASCII dışı VARCHAR ve CHAR veriler düzeltildi.
  • Toplu yükleme işlemleri sırasında bağlantı zaman aşımları düzeltildi.

mssql-python 1.9.0

Yayın tarihi: Haziran 2026

Geliştirmeler

Toplu kopyalamada satır nesneleri

cursor.bulkcopy() Artık alınan Row nesneleri doğrudan kabul eder, manuel tuple dönüşümü gerektirmez.

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

Hata düzeltmeleri

  • Sabit tekerlek ambalajı olduğu için simdutf her zaman statik bağlantılıdır.
  • executemany() içindeki büyük DECIMAL eklemeleri düzeltildi.
  • NULL parametreler için yanlış tür geri dönüşü düzeltildi.
  • İstisnaların pickle ve unpickle işlemlerindeki gidiş-dönüş sorunu düzeltildi.
  • nextset(), sonuç kümeleri arasında PRINT iletilerini koruyacak şekilde düzeltildi.
  • Veri-yürütme sırasında geri dönüş yolunda Row işleme düzeltildiexecutemany().
  • Statik analiz araçları için fetch yönteminin tür denetimi düzeltildi.

MSSQL-python 1.8.0

Yayın tarihi: Mayıs 2026

Geliştirmeler

ActiveDirectoryMSI toplu kopyalama desteği

cursor.bulkcopy() Artık sistem tarafından atanan ve kullanıcı tarafından atanan yönetilen kimlikleri destekler Authentication=ActiveDirectoryMSI .

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

Satır dize anahtarlı indeksleme

Artık satır değerlerine sütun adıyla erişebilirsiniz, örneğin row["col"], pozisyonsal indeksleme ve öznitelik erişimine ek olarak.

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

Paketlenmiş ODBC sürücü yükseltmesi

Pakette bulunan Microsoft ODBC Driver for SQL Server, 18.6.2.1 sürümüne güncellendi.

Hata düzeltmeleri

  • Token tabanlı kimlik doğrulamada ertelenmiş bağlantı-öznitelik ömür sorunları düzeltildi.
  • Kimlik doğrulama yolunda tekrarlanan bağlantı dizesi ayrıştırması düzeltildi.
  • Dizi girişleri için sabit executemany() tip notasyonlar.

mssql-python 1.7.1

Yayın tarihi: Mayıs 2026

Geliştirmeler

Genişletilmiş tekerlek kapsama alanı ve performans iyileştirmeleri

Bu sürüm, RHEL 8 uyumlu tekerlekler ekliyor, macOS Python 3.10 universal2 tekerleklerini geri getiriyor, UTF-16 yönetimini , simdutfile iyileştiriyor ve sıcak yolu optimize execute() ediyor.

Performans etkisi: Yöntemdeki execute() sıcak yol optimizasyonları sayesinde toplu yürütme verimliliği tipik iş yüklerinde ~15% artıyor.

Hata düzeltmeleri

  • Oturum açma başarısızlıkları, RuntimeError yerine mssql_python DB-API istisnaları oluşturacak şekilde düzeltildi.
  • ODBC yürütme, getirme, işlem ve bağlantı özniteliği çağrılarını engelleyen genişletilmiş GIL yayını.
  • Ondalık değerler işaret değiştirdiğinde oluşan executemany() hatalar düzeltildi.
  • Platformlar arasında tutarsız olan CP1252 VARCHAR kod çözümlemesi düzeltildi.
  • NVARCHAR(MAX) ve VARCHAR(MAX) sütunlarındaki boş dizeler için cursor.bulkcopy() hataları düzeltildi.

Note

Sürüm 1.7.0, yayın sorunları nedeniyle geri çekildi. 1.7.1 veya daha sonrasını kullanın.

MSSQL-python 1.6.0

Yayın tarihi: Nisan 2026

Geliştirmeler

Parser tabanlı bağlantı dizesi temizleme

Bu geliştirme, şifre alanlarındaki özel karakterlerin ve destekli değerlerin doğru ayrıştırılmasını sağlar.

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

Bağlantı dizesi temizleme işlemi, ODBC bağlantı dizesi söz diziminin doğru şekilde işlenmesi için normal ifade tabanlı mantıktan ayrıştırıcı tabanlı işleme geçirildi.

Hata düzeltmeleri

  • ODBC bağlantı ve bağlantı kesme işlemlerini engelleyen durumlarda GIL’in serbest bırakılması düzeltildi.
  • setinputsizes() SQL_DECIMAL ve SQL_NUMERIC ipuçlarıyla ilgili çökmeler düzeltildi.
  • ODBC katalog yöntemleri için yanlış fetchone() davranış düzeltildi.
  • reset_cursor=False kullanıldığında oluşan geçersiz imleç durumu hataları düzeltildi.
  • Haritalama tabanlı parametre dizileri için sabit executemany() tip ipuçları.
  • için bir yol geçiş koruması setup_logging(log_file_path=...)eklendi.

mssql-python 1.5.0

Yayın tarihi: Nisan 2026

Yeni özellikler

Apache Arrow destek getir

Üç yeni imleç yöntemi, Arrow C Veri Arayüzü üzerinden yüksek performanslı sütunlu veri alımını sağlar:

  • cursor.arrow() tam bir pyarrow.Table döndürür.
  • cursor.arrow_batch(), tek bir pyarrow.RecordBatch döndürür.
  • cursor.arrow_reader(), akış için bir pyarrow.RecordBatchReader döndürür.

Uygulama, performansı artırmak için sıcak yolda Python nesne oluşturmayı atlar. Tam dokümantasyon için Apache Arrow entegrasyonuna bakınız.

sql_variant türü desteği

Sürücü artık veri getirme sırasında sql_variant sütunlarını algılar, dayandıkları temel veri türünü belirler ve ham baytlar yerine doğru türde Python değerleri döndürür.

Note

sql_variant sütunları, sabit tipli sütunlara kıyasla performansı biraz etkileyebilen akış tabanlı bir getirme yolu kullanır.

Yerel UUID desteği

Yeni bir native_uuid ayarı, UNIQUEIDENTIFIER sütunlarının uuid.UUID nesneleri (varsayılan) olarak mı yoksa pyodbc ile uyumlu büyük harfli dizeler olarak mı döndürüleceğini kontrol eder. Modül seviyesinde veya bağlantı başına yapılandırın:

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

Daha fazla bilgi için Modül yapılandırması bölümünü inceleyebilirsiniz.

Sıra sınıfı kamu ihracatı

Row sınıfı artık tür ek açıklamaları için üst düzeyde dışa aktarılıyor:

from mssql_python import Row

Hata düzeltmeleri

  • Parantezli tanımlayıcılar, dize değişmezleri ve yorumlar içindeki yanlış pozitif ? algılaması düzeltildi.
  • VARBINARY sütunları için NULL parametre bağlama düzeltildi (artık örtük dönüştürme hatalarına neden olmuyor).
  • TIME(1) ile TIME(7) arasındaki sütunlar için, datetime.time değerlerinin gidiş-dönüşlerde mikrosaniyeleri kaybetmesi düzeltildi.
  • TIME sütunları için kesirli saniyelerin doğru şekilde dahil edilmesini sağlamak üzere Arrow alma yolu düzeltildi.
  • Microsoft Entra ID kimlik doğrulama yöntemleriyle toplu kopyalama düzeltildi (eski kimlik bilgileri alanları artık doğrulama hatalarına yol açmıyor).
  • Kimlik doğrulama performansını artırmak için Azure Identity kimlik bilgisi örnekleri modül düzeyinde önbelleğe alındı.

MSSQL-python 1.4.0

Çıkış tarihi: Mart 2025

Yeni özellikler

Toplu kopya desteği

Yüksek performanslı toplu veri yükleme artık cursor.bulkcopy() aracılığıyla kullanılabilir:

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

Yöntem, batch_size, timeout, column_mappings, keep_identity, check_constraints, table_lock, keep_nulls, fire_triggers ve use_internal_transaction için seçenekleri kabul eder.

Tam dokümantasyon için Toplu kopyaya bakınız.

Improvements

  • Büyük sonuç kümeleri için performans optimizasyonları.
  • Toplu işlemler sırasında bellek kullanımı azaldı.
  • Toplu kopyalama hataları için geliştirilmiş hata mesajları.

mssql-python 1.3.0

Çıkış tarihi: Ocak 2025

Yeni özellikler

Ayarlar sınıfı

Yeni Settings sınıf üzerinden modül genelinde davranışı yapılandırmak:

import mssql_python

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

Ayrıntılar için Modül yapılandırmasına bakın.

Improvements

  • Azure SQL failover sırasında bağlantı zaman aşımının daha iyi yönetilmesi.
  • Python 3.13 ile geliştirilmiş uyumluluk.

MSSQL-python 1.2.0

Çıkış tarihi: Kasım 2024

Yeni özellikler

Şema keşif yöntemleri

Veritabanı meta veri keşfi için yeni imleç yöntemleri:

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

Tam dokümantasyon için Şema keşfine bakınız.

Improvements

  • Tekrarlanan şema sorguları için geliştirilmiş meta veri önbelleği.
  • columns() sonuçlarında hesaplanan sütunlar için daha iyi işleme

MSSQL-python 1.1.0

Çıkış tarihi: Eylül 2024

Yeni özellikler

Özel çıkış dönüştürücüleri

Veri getirme sırasında sütun değerlerini dönüştürmek için özel işlevleri kaydedin:

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)

Yönetim yöntemleri:

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

Tam dokümantasyon için bkz. Özel tip dönüştürücüler.

Improvements

  • Tip dönüşümü hataları için daha iyi hata mesajları.
  • None döndüren dönüştürücü işlevler için destek.

MSSQL-python 1.0.0

Çıkış tarihi: Temmuz 2024

İlk GA sürümü

Microsoft'un SQL Server için yerel Python sürücüsü olan mssql-python'un ilk genel erişilebilir sürümü.

Temel özellikler

  • DDBC mimarisi: ODBC sürücü kurulumu gerektirmeden doğrudan veritabanı bağlantısı.
  • DB-API 2.0 uyumluluğu: Standart Python veritabanı arayüzü.
  • Bağlantı havuzlama: Yerleşik bağlantı havuzu yönetimi.
  • Microsoft Entra doğrulama: Azure kimlik tabanlı kimlik doğrulama için tam destek.
  • TLS şifreleme: Sertifika doğrulama ile güvenli bağlantılar.

Bağlantı özellikleri

  • 21 bağlantı dizesi anahtar kelimesi.
  • 9 kimlik doğrulama modu (SQL, Windows ve 7 Microsoft Entra ID yöntemi).
  • Otomatik kaydetme denetimi.
  • Uygulama yöntemleri: execute(), executemany(), ve batch_execute().
  • set_attr() ve getinfo() aracılığıyla bağlantı özellikleri.
  • Bağlam yöneticisi desteği.

İmleç özellikleri

  • Standart getirme yöntemleri: fetchone(), fetchmany(), fetchall().
  • Genişletilmiş yöntemler: fetchval(), skip().
  • Uygulama yöntemleri: execute() ve executemany().
  • Öznitelik ve indeks erişimine sahip satır nesneler.
  • Birden çok sonuç kümesinde nextset() ile gezinme.

Veri türü desteği

  • Tüm SQL Server yerel tipleri.
  • Python↔SQL tür eşlemeleri.
  • Açık tipleme için SQL tip sabitleri (örneğin, mssql_python.SQL_DECIMAL).
  • Python None olarak NULL işleme.

İşlem desteği

  • El ile kesinleştirme ve geri alma.
  • Otomatik kesinleştirme modu.
  • İzolasyon seviyesi kontrolü.
  • Kilitlenme tespiti ve giderme.

Kimlik doğrulama modları

Mode Açıklama
SQL Server kimlik doğrulaması Kullanıcı adı ve parola
Windows kimlik doğrulaması Trusted_Connection
ActiveDirectoryDefault DefaultAzureCredential
ActiveDirectoryInteractive Tarayıcı tabanlı giriş
ActiveDirectoryDeviceCode Cihaz kodu akışı
Active Directory Parolası Microsoft Entra kullanıcı adı ve şifresi (kullanımdan kaldırılmıştır; ROPC kullanır)
ActiveDirectoryMSI İdare edilen kimlik
ActiveDirectoryServicePrincipal Servis Principal
ActiveDirectoryIntegrated Windows Kerberos

Upgrade

pyodbc'den

Ayrıntılı geçiş yönergeleri için pyodbc'den geçiş yapma bölümüne bakın.

Önemli farklar:

  • Hem ? (qmark) hem de %(name)s (pyformat) parametre stilleri desteklenmektedir. Mevcut ? sorgularınız değişmeden çalışıyor.
  • callproc() yöntem yok. Bunun yerine EXECUTE komutlarını kullanın.
  • Yerleşik bağlantı havuzlaması.
  • Harici ODBC sürücü bağımlılığı yok.

pymssql'den

Detaylı göç rehberliği için bkz. Migrate from pymssql.

Önemli farklar:

  • Parametre işaretleyicilerini %s%d veya ?ile değiştirin%(name)s.
  • Konumsal argümanlar yerine bağlantı dizesi kullanın.
  • FreeTDS bağımlılığı yok.
  • Her bağlantı için birden fazla eşzamanlı imleç.
  • Öznitelik erişimine sahip satır nesneleri, as_dict=True öğesinin yerini alır.

mssql-python sürümleri arasında

Sürücüyü yükselterek yeni özellikler ve düzeltmeler elde edin.

pip install --upgrade mssql-python

Üretim sistemlerini yükseltmeden önce geriye dönük uyumluluğu bozan değişiklikler olup olmadığını öğrenmek için sürüm notlarını kontrol edin.

Yol Haritası

Yaklaşan özellikler ve geliştirme yol haritası için GitHub deposuna bakınız.