django-mssql-backend'den mssql-django'ya geçiş

Bu makale, bir Django projesinin django-mssql-backend altyapısını kullanan sql_server.pyodbc paketinden mssql-django paketine nasıl taşınacağını açıklar.

Overview

mssql-django paketi, django-mssql-backend öğesinin ardılıdır. SQL Server için güncellenmiş paket adı, motor tanımlayıcısı ve yeni Django sürümleri için destek sağlayan bir Django veritabanı arka uçu sağlar. pyodbc sürücü yolu 2.0'da mssql-django varsayılan olarak kalır ve her veritabanı aliası mssql-python sürücüsüne katılabilir. Daha fazla bilgi için, mssql-django için veritabanı sürücüsünü seç sayfasına bakınız.

Feature django-mssql-backend mssql-django
Paket adı django-mssql-backend mssql-django
MOTORU sql_server.pyodbc mssql
Django desteği 2.2, 3.0, 3.1 5.2, 6.0, 6.1
Bakımını yapan: Microsoft Bilişim Sistemleri Microsoft Bilişim Sistemleri
PyPI pip install django-mssql-backend pip install mssql-django

1. Adım: Python paketini güncelleştirme

Eski paketi kaldırın ve yenisini yükleyin:

pip uninstall django-mssql-backend
pip install mssql-django

requirements.txt dosyası kullanıyorsanız, paket başvurusunu değiştirin:

# Before
django-mssql-backend>=2.8.1

# After
mssql-django>=2.0

2. Adım: DATABASE ENGINE'i güncelleyin

settings.py içinde, ENGINE değerini sql_server.pyodbc değerinden mssql değerine değiştirin:

# Before
DATABASES = {
    "default": {
        "ENGINE": "sql_server.pyodbc",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 17 for SQL Server",
        },
    },
}

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

Note

Varsayılan pyodbc yolu, SQL Server için Microsoft ODBC Driver 18 kullanır. driver seçeneğinde bunu açıkça belirterek pyodbc yolunda Sürücü 17'yi kullanmaya devam edebilirsiniz. mssql-python yolu bu driver seçeneği görmezden geliyor.

3. Adım: INSTALLED_APPS'i Güncelleyin

INSTALLED_APPS öğeniz sql_server öğesine başvuruyorsa, bunu güncelleştirin:

# Before
INSTALLED_APPS = [
    "sql_server",
    # ...
]

# After - only needed if using inspectdb
INSTALLED_APPS = [
    "mssql",
    # ...
]

4. Adım: Yapılandırmayı doğrulama

Yeni arka ucun başarıyla bağlandığından emin olmak için hızlı bir doğrulama çalıştırın:

python manage.py check
python manage.py showmigrations

5. Adım: Test paketinizi çalıştırma

Her şeyin yeni arka uçla çalıştığını doğrulamak için projenizin test paketini çalıştırın:

python manage.py test

Dikkat edilmesi gereken geriye dönük uyumluluğu bozan değişiklikler

Area Change
Varsayılan veritabanı sürücüsü mssql-django 2.0, pyodbc'yi varsayılan veritabanı sürücüsü olarak tutar. mssql-python yolunu kullanmak için, OPTIONS değerini takma adın "python_driver": "mssql_python" sözlüğünde ayarlayın.
pyodbc yolundaki varsayılan ODBC sürücüsü pyodbc yolu, varsayılan olarak Encrypt=yes ayarlayan ODBC Driver 18 for SQL Server kullanır. Kendinden imzalı veya güvenilmeyen sertifikalara sahip sunucularla bağlantılar, TrustServerCertificate=yes ögesini extra_params öğesine eklemediğiniz sürece başarısız olur. Alternatif olarak, pyodbc yolunda Sürücü 17'yi belirtin veya sunucuya güvenilir bir sertifika yükleyin.
return_rows_bulk_insert Varsayılan değer False’dır. True sonrasında kimliklerin döndürülmesini etkinleştirmek için bulk_create olarak ayarlayın. False, tetikleyici içeren tablolar için korunmalıdır. Bkz. mssql-django ile toplu işlemler.