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.
2.0 sürümünden itibaren, mssql-django iki Python veritabanı sürücüsünden biri üzerinden bağlanır:
- pyodbc, harici olarak yüklenen Microsoft ODBC Driver for SQL Server. Bu sürücü varsayılan olarak kullanılıyor.
- mssql-python, Microsoft'un Python sürücüsü, ayrıca ayrı yüklü bir ODBC sürücüsü gerektirmiyor.
Her veritabanı takma adı için sürücüyü seçersiniz. Bir takma ad mssql-python kullanabilirken, projenin geri kalanı pyodbc kullanmaya devam edebilir. Her iki durumda da değer ENGINE kalır "mssql" .
Bir takma adı mssql-python'a ekleyin
OPTIONS seçeneğini bu diğer adın python_driver sözlüğünde ayarlayın:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<database>",
"USER": "<user_id>",
"PASSWORD": "<password>",
"HOST": "<server>.database.windows.net",
"PORT": "1433",
"OPTIONS": {
"python_driver": "mssql_python",
"extra_params": "Encrypt=yes",
},
},
}
Arka uç , "mssql-python", ve "python"kabul "mssql_python"eder ve karşılaştırma durumu görmezden gelir.
python_driver öğesini atlayın, boş bırakın veya varsayılan sürücüyü korumak için bunu "pyodbc" olarak ayarlayın. Ayar her takma ad için ayrı olduğundan, seçeneği kaldırarak her seferinde bir veritabanını geri alırsınız.
mssql-python modülü yalnızca bir takma ad onu seçtiğinde içe aktarılır. Yüklü sürüm 1.15.0'dan eskiyse, arka uç gerekli sürümü belirten ImproperlyConfigured hatasını verir.
Yükleme gereksinimleri
pip install mssql-django Her iki sürücüyü de yükler.
mssql-python yolunun ayrı bir ODBC sürücüsü kurulumu yoktur.
--no-deps kurulumu veya mssql-python’i yansıtmayan özel bir dizin, paketin eksik kalmasına neden olur ve takma ad içe aktarma sırasında başarısız olur.
macOS'ta OpenSSL ve Linux'ta gerekli kütüphaneler dahil olmak üzere mssql-python için platform ön koşullarını yükleyin.
mssql-python Zorunlu bir bağımlılık olduğundan, mssql-django 2.0 yalnızca uyumlu mssql-python dağıtıma sahip platformlara yüklenir. Platform listesi için mssql-django destek ve yaşam döngüsü bölümlerine bakınız.
Davranış farklılıkları
İki sürücü farklı bağlantı dizileri oluşturur ve farklı bağlantı anahtar kelimelerini ortaya çıkarır. Takma adını değiştirmeden önce bu bölümü gözden geçirin.
Bağlantı ayarları
| Setting | pyodbc | mssql-python |
|---|---|---|
HOST ve PORT |
Sürücüye ve PORT'e bağlı olarak, SERVER, host_is_server veya SERVERNAME artı SERVER olarak üretilir. |
Her zaman böyle yayılır.SERVER=<host>,<port> Boş bir HOST, localhost’e dönüşür. |
driver |
ODBC sürücüsünü seçer. SQL Server için varsayılan olarak Microsoft ODBC Driver 18'e geçer, otomatik olarak Driver 17'ye geri dönüş yapılır. | Göz ardı edildi. Driver 17 için bir yedek seçenek yok. |
dsn |
Supported. | Göz ardı edildi. |
host_is_server |
FreeTDS için destekleniyor. | Göz ardı edildi. |
unicode_results |
Supported. | Göz ardı edildi. |
TOKEN |
Supported. | Supported.
TOKEN öğesini, PASSWORD, Authentication veya bir USER anahtar sözcüğü olmadan sağlayın. Uygulamanız tokenı edinir ve yeniler. |
DATABASE_CONNECTION_POOLING |
Geçerli. | Geçerli. |
Zaman aşımları, yeniden denemeler, izolasyon seviyesi, harmanlama ve return_rows_bulk_insert her iki yolda da aynı şekilde davranır.
Ek bağlantı parametreleri
mssql-python 1.15, extra_params öğesini izin listesine göre doğrular ve bunun dışında kalan her şeyi reddeder. Desteklenen anahtar kelimeler şunları içerir: Authentication, Encrypt, TrustServerCertificate, HostnameInCertificate, ServerCertificate, ApplicationIntent, ConnectRetryCount, MultiSubnetFailover, ServerSPN, KeepAlive, KeepAliveInterval, ConnectRetryInterval, IpAddressPreference ve PacketSize.
Sürücü, DRIVER, DSN, SERVERNAME ve MARS_Connection değerlerini kabul etmez; ayrıca LongAsMax, AnsiNPW, WSID, QuotedId, Regional, ColumnEncryption, APP, Current Language, Network Library, UseFMTONLY, Description ve Connect Timeout gibi yalnızca pyodbc’ye özgü anahtar sözcükleri de kabul etmez. Takma adını değiştirmeden önce bu anahtar kelimeleri kaldırın ve connection_timeoutConnect Timeoutyerine seçeneği kullanın.
extra_params, arka ucun da ürettiği bir anahtar kelime belirlediğinde, açıkça belirtilen değer öncelikli olur.
Birden Çok Etkin Sonuç Kümesi
pyodbc yolunda, takma ad Windows'ta bir Microsoft ODBC sürücüsü kullandığında arka uç MARS_Connection=yes ekler. Açık MARS_Connection bir değer extra_params yerine değer verilir ve eşleşme case'i görmezden gelir.
mssql-python yolu MARS’ı hiçbir zaman etkinleştirmez ve MARS_Connection anahtar sözcüğünü kabul etmez; bu nedenle bu takma ad için MARS’ı açamazsınız.
MARS olmadan, iç içe geçmiş bir sorgu bağlantıyı yeniden kullanabilsin diye QuerySet.iterator(), satırları döndürmeden önce tüm sonucu belleğe okur ve chunk_size bunu değiştirmez. Büyük sorgu setlerindeki bellek maliyetini hesaba katın.
Microsoft Fabric Warehouse gibi MARS'ı reddeden uç noktalar için bkz. MARS'ı devre dışı bırak.
Kodlama yapılandırması
Her iki sürücü de setdecoding ve setencoding öğelerini kabul eder ve her girdi, seçilen sürücünün bağlantı yöntemine gider. Her bir setdecoding girdisinin her iki yolda da bir sqltype anahtarına sahip olması gerekir ve aynı girdi her iki sürücüyle de çalışır. Bir fark: mssql-python, -99 için SQL_WMETADATA kabul eder, pyodbc ise bunu reddeder.
Sürücüler arasında seçim yapın
Yeni geliştirme için kullanın mssql-python. ODBC sürücü kurulum adımını konteyner imajlarından ve uygulama hizmeti dağıtımlarından kaldırıyor.
Dağıtımınız adlandırılmış bir DSN'ye, FreeTDS'ye, pyodbc anahtar sözcüğü aracılığıyla Always Encrypted'a, kendi yönettiğiniz bir ODBC sürücüsü sürümüne veya MARS'a bağlıysa ColumnEncryption kullanın. MARS'ın her yolda ne gerektirdiği için bkz. Çoklu Aktif Sonuç Setleri.
Mevcut projeler devam pyodbcedebilir. Varsayılan olarak kalır ve tam olarak desteklenmektedir. Taşıma yaptığınızda, bir seferde yalnızca bir takma adı değiştirin ve geri kalanını taşımadan önce test süitinizi onun üzerinde çalıştırın.