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.
Bu makalede, Django veritabanı arka ucu her sürümündeki mssql-django yeni özellikler, iyileştirmeler ve değişiklikler açıklanmaktadır.
Sürüm 2.0
Çıkış tarihi: Eylül 2026
Sürüm 2.0, veritabanı başına pyodbcalternatif olarak Microsoft'un mssql-python sürücüsünü ekler, desteklenen Python, Django ve SQL Server matrisini ileri taşır ve uyumluluk ile güvenilirlik düzeltmeleri getirir.
pyodbc varsayılan sürücü olarak kalır.
Öne Çıkanlar
-
mssql-python sürücü desteği: Bir veritabanı takma adı,
OPTIONSsözlüğünde"python_driver": "mssql_python"ile etkinleştirilir. Sürücü; bağlantıları, bağlantı havuzunu, yeniden denemeleri, işlemleri ve geri alma noktalarını, datetimeoffset değerlerini, iç gözlemi ve Microsoft Entra kimlik doğrulamasını kapsar. Bu seçeneği belirtmeyen takma adlarpyodbckullanmaya devam eder, yani siz etkinleştirene kadar hiçbir şey değişmez. Daha fazla bilgi için, mssql-django için veritabanı sürücüsünü seç sayfasına bakınız. -
mssql-python yolunda ayrı bir ODBC sürücüsü kurulumu yok: Bir alias için
mssql-pythonSQL Server için harici olarak yüklenmiş Microsoft ODBC Sürücüsü gerekmez.pyodbcüzerinde kalan takma adlar hâlâ öyle kalır. - Modernize destek matrisi: Python 3.10'dan 3.14'e, Django 5.2'den 6.1'e ve SQL Server 2017'den 2025'e kadar. Django 6.0 ve daha sonraki sürümler Python 3.12 veya daha yeni bir sürüm gerektirir.
Hata düzeltmeleri
-
Açıkça belirtilen MARS ayarları geçerli sayılır:
extra_paramsiçindeki açık birMARS_Connectiondeğeri, Windows’un varsayılan değeriyle üzerine yazılmak yerine korunur ve eşleşmede büyük/küçük harf dikkate alınmaz.MARS_Connection=noayarı artık Microsoft Fabric Warehouse dahil MARS'ı reddeden uç noktalarında da çalışıyor. MARS devre dışıyken, iç içe sorgunun bağlantıyı yeniden kullanabilmesi için ORM yineleme işlemi sonuçları döndürmeden önce arabelleğe alır; bu da büyük sorgu sonuç kümelerinde daha fazla bellek kullanımına yol açar. Bu bağlantı düzeltmesi, göçler veya diğer SQL Server özellikleri için tam Warehouse desteği eklemez. -
Parantez joker kartları ifade aramalarında kaçar: Bir ifade ile iki alanı
F()karşılaştıran desen araştırmaları, örneğincontainsvestartswith, SQL Server[joker kartından kaçar. Parantez karakterleri, joker sözdizimi yerine veri olarak eşleştirilir. -
inspectdb şema adlarındaki tırnak işaretleri kaçışlanır:
inspectdb --schemadeğerindeki tek bir tırnak, meta veri sorgusunda kaçışlanır; böylece tırnak içeren şema adları artık hatalı biçimlendirilmiş Transact-SQL (T-SQL) üretmez. -
Boş bir HOST, mssql-python yolunda localhost'a bağlanır: Django'nun boş bir dizeyle doldurduğu atlanan
HOST, boş birlocalhostdeğeriyle doğrulamadan geçememesi gerekirkenSERVER=olarak çözümlenir. Bu davranış, yerel örnekler için varsayılan ilepyodbceşleşir.
Improvements
-
pytz yerine zoneinfo ve tzdata kullanıldı: Saat dilimi işleme, standart kitaplıktaki
zoneinfomodülünü kullanır;tzdatapaketi ise Windows ve minimal konteyner imajları gibi yerleşik olarak IANA saat dilimi veritabanı içermeyen ortamlarda bu veritabanını sağlar. Yaz saati uygulamasında negatif fark bulunan bölgelerde farklar yıl boyunca doğru kalır.pytzartık bağımlılık değil. -
Daha yeni SQL Server sürümleri kabul edilir: Backend'in tanımadığı bir SQL Server ana sürümü, sürüm doğrulamada başarısız olmak yerine backend'in bildiği en son yetenek setini kullanır. Eşleşen
mssql-djangobir sürüm çıkmadan önce yeni bir SQL Server sürümüne bağlanabilirsiniz. Bağlantıyı kabul etmek, test edilmemiş özellikleri desteklenmiş olarak ilan etmez.
Kritik değişiklikler
- Python 3.8 ve 3.9 ile Django 3.2'den 5.1'e kadar artık desteklenmiyor. Önceki sürümler için uyumluluk kodu hâlâ yerinde kalıyor, ancak bu kombinasyonlar test edilmiyor veya listelenmiyor.
-
mssql-python1.15.0 veya daha sonrası, bir takma ad kullansapyodbcbile zorunlu bir bağımlılıktır. Kurulum, ARM64 üzerinde SUSE Linux hariç tutulan uyumlumssql-pythondağıtıma sahip platformlarla sınırlıdır. Diğer platformlardaki projeler ise 1.8.0 sürümünde kalır. - Bildirilen SQL Server desteği SQL Server 2017 ile başlar ve yerel bağlantı desteği Microsoft ODBC Driver 17 ve Microsoft ODBC Driver 18 ile sınırlıdır.
Sürüm 1.8.0
Çıkış tarihi: Ağustos 2026
Sürüm 1.8.0, Django 6.1 için destek eklerken Django 3.2'den 6.0'a kadar olan sürümleri desteklemeye devam etmektedir. Bir projeyi Django 6.0'dan 6.1'e taşımak, bu bölümde açıklanan iki Django 6.1 özelliğinden birini kullanmadıkça kod değişikliği gerektirmez.
Öne Çıkanlar
-
Django 6.1 desteği: Django 6.1'e karşı onaylandı ve Django 3.2'den 6.0'a kadar destek olmaya devam etti. Bağımlılık kısıtlaması 'den
django>=3.2,<6.1'yedjango>=3.2,<6.2genişler. -
Django 6.1'de sorgu derleyicisi
quote_namekullanıyor: Django 6.1 kullanımdanquote_name_unless_aliaskaldırıldı. Arka uç artık Django 6.1 ve sonraki sürümlerdeSQLCompiler.quote_nameçağrısı yapıyor; bu, sürüme göre koşullandırıldığı için önceki Django sürümleri değişmeden kalıyor. Dilimlenmiş ve kaydırmalı sorgular, örneğinqs[a:b]veOFFSET ... FETCH, kullanımdan kaldırma uyarıları olmadan derlenir. -
Yabancı anahtar iç gözlemi ON DELETE kuralını döndürür: Django 6.1, DELETE ögesini veritabanı düzeyindeki ON
get_relations()kuralını da içerecek şekilde genişletti. Arka uç, beklenen üç parçalı yapıyı döndürür ve SQL ServerNO ACTIONyabancı anahtarlarını buna uygun şekilde eşler; böyleceinspectdbile yabancı anahtar incelemesi doğru modeller üretir.
Desteklenmeyen Django 6.1 özellikleri
Bu arka uçta farklı nedenlerle iki Django 6.1 eklemesi mevcut değildir:
-
Veritabanı düzeyinde referans işlemleri (
DB_CASCADE,DB_SET_NULL,DB_SET_DEFAULT): SQL Server, aynı tabloya birden fazla kaskad yola sahip yabancı anahtar grafikleri reddeder (1785 hatası), yani bu özellik için hiçbir SQL Server sürümünde yerel yol yoktur. Bu değerlerden birini kullanmak, Django sistem kontrolünüfields.E324artırır ve bu da sizi standart Django seviyesineon_deleteyönlendirir. -
Bit düzeyinde toplamalar (
BitAnd,BitOr,BitXor): SQL Server'ın yerleşik bit düzeyinde toplama işlevi yoktur ve arka uç bunları öykünmez, bu nedenle bu toplamalarNotSupportedErrorhatası verir.
Daha fazla bilgi için bkz. mssql-django'da sınırlamalar ve desteklenmeyen özellikler.
Sürüm 1.7.4
Çıkış tarihi: Temmuz 2026
Sürüm 1.7.4, ham ve açıklamalı GROUP BY sorgu işleme için iki düzeltme içeren geriye dönük uyumlu bir yama sürümüdür.
Hata düzeltmeleri
-
IndexErrorescape edilmişGROUP BYve gerçek parametreler içeren%%sorgularında: Daha önce,GROUP BYyan tümcesi içeren herhangi bir sorgu,%\w+ile eşleşip bunu{}ile değiştiren bir yer tutucuları yeniden yazma adımından geçiyordu. Bu regex ayrıca kaçışlı%%değişmezlerini de eşleştiriyordu; bu da sahte yer tutucular ekliyor ve bir sorguIndexError: Replacement index N out of rangekaçışı ile gerçek bir%%parametresini birleştirdiğinde%shatasına yol açıyordu. Daraltılmış regex artık yalnızca%%'a (aynen korunur) ve%s'e (gerçek yer tutucu) dokunur; derleyicinin ürettiği tek desen de budur. Aynı düzeltme, ayrıca parametresiz bir sorgudaLIKE '%abc%'gibi kaçırılmamış bir deseninLIKE '{}%'olarak yeniden yazılmasına ve yanlış satırların döndürülmesine yol açan, bununla ilgisiz sessiz bir hatayı da önler. -
Ham
NotImplementedErrorsorgularındaIntegerChoicesiçinGROUP BY: Daha önce,IntegerChoicesyan tümcesi içeren bir ham sorguyaGROUP BYdeğeri geçirilmesiNotImplementedError: Not supported type <enum ...>hatasına neden oluyordu. Parametre tipleme yardımcısı tam tip kontrolleri (typ == int), kullandı vetype(IntegerChoices_value)enum sınıfı değilint, bu yüzden değer alt sınıflaraintsahip olmasına rağmen artışa geçti. Tür denetimleri artıkisinstancekullanır vebooldalı,intdalından önce değerlendirilir (çünkübool, kendisi birintalt sınıfıdır). Enum seçimleri artık doğru şekilde bağlanıyor,boolhalaBITbağlıyor ve sadeintise değişmiyor.
Sürüm 1.7.3
Yayın tarihi: Haziran 2026
Sürüm 1.7.3, iki bağlantı ve çalışma zamanı düzeltmesi içeren geriye dönük uyumlu bir yama sürümüdür.
Hata düzeltmeleri
-
FA001dışındakiAuthentication=modları içinActiveDirectoryMsi: Daha önce, arka uçTrusted_Connection=yesöğesini yalnızcaActiveDirectoryMsiiçin atlıyordu.USERdeğeri sağlamayan diğer Entra modları (örneğin,ActiveDirectoryIntegrated,ActiveDirectoryDefault,ActiveDirectoryDeviceFlow) yine de ODBC sürücüsününTrusted_Connection=yes(FA001) ile reddettiğiCannot use Authentication option with Integrated Security optiondeğerini aldı. Düzeltme, sınırları gözeten ve büyük/küçük harf duyarsız bir eşleşmeyle açıkça belirtilmiş herhangi birAuthentication=değerini algılar ve hemTrusted_Connectionhem deIntegrated Security=SSPIdeğerlerini atlar. Parola işleme değişmemiştir:SqlPassword,ActiveDirectoryPasswordveActiveDirectoryServicePrincipal,PWDgöndermeye devam ederkenActiveDirectoryInteractivebunu göndermemeye devam eder. -
KeyErroralt sınıflardaDatabaseWrapper: Önbelleğe alınansql_server_versionveto_azure_sql_dbözellikleri, birtype(self).__dict__alt sınıfıncached_propertybunlara ilk kez eriştiğinde (1.7.1'de ortaya çıkan bir regresyon) yükseltenKeyErrorgirişine dayanırDatabaseWrapper. Düzeltme,_known_versionsüzerinden erişilen açık sınıf düzeyi sözlükleri (_known_azures,self.) kullanır; böylece arama MRO üzerinden çözümlenir ve alt sınıftan türetilmiş sarmalayıcılar doğru şekilde çalışır.
Sürüm 1.7.2
Yayın tarihi: Mayıs 2026
Sürüm 1.7.2, saat dilimi ve uyumluluk düzeltmeleriyle geriye dönük uyumlu bir yama sürümüdür.
Hata düzeltmeleri
-
.explain()Django 4.0 ve üzeri için uyumluluk: Artık Django 4.0 ve üzeri sürümlerde.explain()başarısız olmaması için Django'nun açıklama meta verilerininAttributeErrorderleyici tarafından işlenmesi düzeltildi. Arka uç artık sürüme uygun açıklama alanlarını izler ve gerektiğinde doğru şekilde yükseltirNotSupportedError. - datetimeoffset saat dilimi işleme: datetimeoffset ayrıştırması, saat dilimi ofsetleri yok sayılmak yerine korunacak şekilde düzeltildi. Döndürülen tarih-saat değerleri artık gerektiğinde zaman dilimi bilgisine sahiptir.
-
Now()ileUSE_TZ=True: Saat dilimi desteği etkinleştirildiğinde saat dilimi farkındalığına sahip davranışı kullanacak şekildeNow()için SQL oluşturma güncellendi; böylece UTC dışındaki SQL Server konaklarında zaman damgası kayması önlenir.
Sürüm 1.7.1
Yayın tarihi: Nisan 2026
Sürüm 1.7.1, hata düzeltmelerine sahip geriye dönük uyumlu bir yama sürümüdür.
Hata düzeltmeleri
-
FieldDoesNotExistazalan dizin sıralamasına sahip alanlar değiştirilirken: Dizin alan adları çözümlenirken,_alter_field()içindekischema.py,index.fields_ordersyerineindex.fieldskullanacak şekilde düzeltildi. Önceki kod, sıralama içeren ham alan dizelerini (örneğin,"-pub_date")model._meta.get_field()öğesine geçiriyordu; bu daFieldDoesNotExisthatasına neden oluyordu. Artık yalnızca alan adı çıkarılır ve sıralama eki doğru şekilde göz ardı edilir. -
Microsoft Fabric desteğindeki SQL veritabanı (EngineEdition 12): Azure sürümü olarak Fabric'de (
EngineEdition=12) tanınan SQL veritabanı. Daha önce Fabric'in motor sürümü tanınmıyordu; bu dato_azure_sql_dböğesininFalsedöndürmesine ve özellik geçidi kontrollerinin başarısız olmasına neden oluyordu. Düzeltme,EDITION_AZURE_SQL_FABRIC=12öğesine_AZURE_EDITIONSekler ve Fabric’i desteklenen en son SQL Server sürümüyle eşler.JSONField, karma fonksiyonları, harmanlama incelemesi ve test veritabanının kaldırılması artık Fabric'te düzgün şekilde çalışıyor.
Sürüm 1.7
Sürüm tarihi: Mart 2026
Öne Çıkanlar
- Django 6.0 desteği: 3.12 veya üzeri Python gerektiren Django 6.0 ile tam uyumluluk. Tüm 6.0 API değişiklikleri arka uç tarafından saydam bir şekilde işlenir.
-
Kısmi
CompositePrimaryKeydestek: Arka uç, Django 5.2CompositePrimaryKeyiçin kısmi destek ekler. Alt sorgulara karşı demet karşılaştırması Django 5.2.4 veya daha yeni bir sürüm gerektirir ve bazı bileşik anahtar veJSONFielduç durumları devam etmektedir. Django 5.2 ilk olarak mssql-django 1.6'da desteklendi. - SQL Server 2025 desteği: SQL Server 2025'e karşı doğrulandı.
- ODBC Sürücüsü 18 varsayılanı: Arka uç artık SQL Server için ODBC Sürücüsü 18 olarak varsayılandır ve sürüm 18 yüklü değilse ODBC Sürücüsü 17'ye otomatik geri döner.
Sürüme özgü notlar
| Django sürümü | Notlar |
|---|---|
| Django 5.1 |
inspectdb bileşik birincil anahtarlarla tabloları inceleyebilir, ancak bunlar için tam model tanımları oluşturmaz. |
| Django 5.2 |
CompositePrimaryKey desteği kısmidir. Alt sorgulara karşı demet karşılaştırması için Django 5.2.4 veya daha yenisi gerekir ve bazı geçiş ile JSONField uç durumları hâlâ mevcuttur. |
| Django 6.0 | 3.12 veya sonraki Python gerektirir. Tüm 5.2 sınırlamaları geçerlidir. |
Sürüm 1.6
Sürüm tarihi: Ağustos 2025
- Django 5.1 ve 5.2 desteği eklendi.
- Gelişmiş JSON işlevselliği ve geriye dönük uyumluluk.
- geliştirilmiş işlem hattı altyapısı.
Sürüm 1.5
Yayın tarihi: Nisan 2024
-
supports_commentsiçindb_commentsözellik bayrağı eklendi. -
AutoField, parametre biçimlendirmesi ve şema sorguları için hata düzeltmeleri.
Sürüm 1.4
Yayın tarihi: Ocak 2024
- Django 5.0 desteği eklendi.
-
db_commentdesteği eklendi. - Tarih/saat dönüştürmeleri ve boş toplamlar için hata düzeltmeleri.
Sürüm 1.3
Yayın tarihi: Mayıs 2023
- Django 4.2 desteği eklendi.
- Büyük/küçük harfe duyarlı
Replaceişlev desteği eklendi. -
OFFSETişlemesi ve sola doldurma ile ilgili hata düzeltmeleri.
Sürüm 1.2
Yayın tarihi: Aralık 2022
- Django 4.1 desteği eklendi.
-
datetimeoffset
USE_TZ=Trueile saat dilimi desteği eklendi. - Toplu ekleme kimliği alma için
return_rows_bulk_insertseçeneği eklendi. - SQL Server 2022 desteği eklendi.
- Azure SQL Yönetilen Örneği desteği eklendi
JSONField.
Sürüm 1.1
Yayın tarihi: Temmuz 2022
- Django 3.2 ve 4.0 desteği.
- SQL Server 2016 ve üzeri ve Azure SQL Veritabanı desteği.
-
pyodbctabanlı bağlantı.