mssql-django Sık Sorulan Sorular

Bu makale, SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Microsoft Fabric'deki SQL veritabanı için mssql-django Django arka ucu hakkında sık sorulan soruları yanıtlamaktadır.

General

mssql-django nedir?

mssql-django paketi, SQL Server için Microsoft tarafından sürdürülen bir Django veritabanı arka uç bileşenidir. Django uygulamalarının pyodbc sürücüsünü kullanarak Microsoft Fabric'daki SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL veritabanına bağlanmasına olanak tanır.

Pip ile yükleyin:

pip install mssql-django

mssql-django hangi Django sürümlerini destekler?

mssql-django v1.7 paketi Django 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 ve 6.0'ı destekler. Tam uyumluluk matrisi için destek yaşam döngüsünü denetleyin.

hangi Python sürümleri desteklenir?

Paket, mssql-django Python 3.8 ve üzerini destekler. Belirli Python sürümü de Django sürümünüzle uyumlu olmalıdır. Örneğin, Django 5.0 için Python 3.10 ve üzeri sürümler, Django 6.0 için ise Python 3.12 ve üzeri sürümler gerekir. Tam uyumluluk matrisi için bkz. Destek yaşam döngüsü .

mssql-django Microsoft tarafından korundu mu?

Yes. Paket mssql-django Microsoft tarafından korunur ve PyPI ve GitHub üzerinde kullanılabilir.

Konfigürasyon

settings.py dosyasında hangi ENGINE değerini kullanmalıyım?

DATABASES yapılandırmanızda ENGINE değerini "mssql" olarak ayarlayın:

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "HOST": "<your-server>",
    },
}

Hangi ODBC sürücüsünü kullanmalıyım?

SQL Server için Microsoft ODBC Sürücüsü 18'i kullanın. 1.7 ve sonraki sürümlerde mssql-django varsayılandır ve sürüm 18 yüklü değilse arka uç otomatik olarak ODBC Sürücüsü 17'ye geri döner. Yalnızca belirli bir sürümü sabitlemeniz gerekiyorsa, sürücüyü OPTIONS sözlüğünde açıkça belirtin:

"OPTIONS": {
    "driver": "ODBC Driver 18 for SQL Server",
},

Azure SQL Veritabanı nasıl bağlanırım?

1433 bağlantı noktasıyla tam nitelikli sunucu adını kullanın:

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>.database.windows.net",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 18 for SQL Server",
        },
    },
}

Microsoft Entra kimlik doğrulamayı nasıl kullanabilirim?

OPTIONS içinde extra_params veya TOKEN ayarını kullanın. TOKEN ayarı, DefaultAzureCredential ve ManagedIdentityCredential dahil olmak üzere herhangi bir azure.identity kimlik bilgisiyle çalışır.

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
token = credential.get_token("https://database.windows.net/.default").token

"TOKEN": token,

Desteklenen tüm yöntemler için bkz. Microsoft Entra kimlik doğrulaması.

Features

mssql-django JSONField'ı destekliyor mu?

Evet, JSONField SQL Server 2016 ve sonraki sürümlerde desteklenir. JSON verileri nvarchar(max) olarak depolanır ve SQL Server JSON işlevleri kullanılarak sorgulanır. Desteklenen aramalar ve sınırlamalar için bkz. JSONField desteği .

mssql-django saat dilimi bilgisi içeren tarih-saat değerlerini destekliyor mu?

Yes. olduğundaUSE_TZ=True, Django SQL Server'da datetimeoffset veri türünü kullanır. Mevcut bir veritabanını geçiriyorsanız, mevcut datetime2 sütunlarını değiştirmeniz gerekir. Bkz. Saat dilimi desteği.

Saklı yordamları çağırabilir miyim?

Yes. Depolanmış yordamları çağırmak için cursor.execute() ile birlikte connection.cursor() kullanın. Birden çok parametreyi ve sonuç kümelerini içeren örnekler için bkz. Saklı yordamlar

bulk_create kimlikleri döndürür mü?

Varsayılan olarak hayır. return_rows_bulk_insert seçeneğinin varsayılan değeri False’dir. Veritabanınızda bunu True olarak ayarlayın OPTIONS; böylece toplu eklemeden sonra kimliklerin döndürülmesini etkinleştirebilirsiniz. Tetikleyicileri olan tablolar için bu seçenek kalmalıdır False . Bkz. Toplu işlemler.

Troubleshooting

"ODBC Sürücüsü bulunamadı" ifadesini alıyorum. Bunu nasıl düzeltebilirim?

SQL Server için Microsoft ODBC Sürücüsünü yükleyin. Linux'ta önce Microsoft APT deposunu ekleyin ve ardından sürücüyü yükleyin:

curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
ACCEPT_EULA=Y sudo apt-get install -y msodbcsql18

Windows Microsoft web sitesinden yükleyiciyi indirin. macOS'ta Homebrew kullanın:

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18

Platforma özgü eksiksiz yönergeler için bkz . Yükleme .

Taşıma işlemim neden "IDENTITY sütunu değiştirilemiyor" hatasıyla başarısız oluyor?

SQL Server, bir sütunu IDENTITY (AutoField) sütunu olarak veya IDENTITY (AutoField) sütunundan değiştirmeyi desteklemez. İstenen alan türüne sahip yeni bir model oluşturun ve verileri el ile geçirin. Bkz. mssql-django'daki sınırlamalar ve desteklenmeyen özellikler.

bulk_update neden NULL olabilen alanlarla başarısız olur?

1.7'de mssql-django arka uç tüm NULL güncelleştirmeleri otomatik olarak işler. Önceki sürümlerde, SQL Server tür çıkarımı hatalarına neden olan CASE WHEN ... THEN NULL ifadelerinde NULL kullanımını önlemek için bulk_update içinde default parametresini kullanın:

Product.objects.bulk_update(products, ["description"], default="")

Ayrıntılar için Toplu işlemler bölümüne bakın.