Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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()vecursor.close()) ve SSH tüneli ile süreç içi yönlendirici yapılandırmalarında,Nonedeğerine sahip parametreler içinSQLDescribeParamiçindeki GIL kilitlenmesi düzeltildi. - Geçici tablolarda ve tablo değişkenlerinde sabit
BINARYveVARBINARYNULL parametreler. Otomatik tip çözümlemesi başarısız olduğunda, sürücü artık açıkcursor.setinputsizes()rehberlikle bir Python uyarısı gönderir. - Apple Silicon’da temiz kurulumda
import mssql_pythonoluşan hata düzeltildi (1.8.0’daki bir regresyon). Paketlenmiş ODBC dylib bağımlılıkları artık hemarm64hem dex86_64mimariler için yeniden yazılmıştır. -
Authentication=ActiveDirectoryServicePrincipalile 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ışı
VARCHARveCHARveriler 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
simdutfher zaman statik bağlantılıdır. -
executemany()içindeki büyükDECIMALeklemeleri 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ındaPRINTiletilerini koruyacak şekilde düzeltildi. - Veri-yürütme sırasında geri dönüş yolunda
Rowiş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ı,
RuntimeErroryerinemssql_pythonDB-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
VARCHARkod çözümlemesi düzeltildi. -
NVARCHAR(MAX)veVARCHAR(MAX)sütunlarındaki boş dizeler içincursor.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_DECIMALveSQL_NUMERICipuçlarıyla ilgili çökmeler düzeltildi. - ODBC katalog yöntemleri için yanlış
fetchone()davranış düzeltildi. -
reset_cursor=Falsekullanı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 birpyarrow.Tabledöndürür. -
cursor.arrow_batch(), tek birpyarrow.RecordBatchdöndürür. -
cursor.arrow_reader(), akış için birpyarrow.RecordBatchReaderdö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. -
VARBINARYsütunları için NULL parametre bağlama düzeltildi (artık örtük dönüştürme hatalarına neden olmuyor). -
TIME(1)ileTIME(7)arasındaki sütunlar için,datetime.timedeğerlerinin gidiş-dönüşlerde mikrosaniyeleri kaybetmesi düzeltildi. -
TIMEsü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ı.
-
Nonedö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(), vebatch_execute(). -
set_attr()vegetinfo()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()veexecutemany(). - Ö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
Noneolarak 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 yerineEXECUTEkomutları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%dveya?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.