MSSQL-django konfigürasyon referansı

Bu makale, Django veritabanı settings.py arka uçunun tam mssql-django yapılandırma referansıdır. Django projenizin DATABASES dosyasındaki sözlüğü düzenleyerek settings.py SQL Server bağlantısını yapılandırın.

En az yapılandırma

Aşağıdaki örnek, varsayılan pyodbc yol için minimum gerekli yapılandırmayı göstermektedir:

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",
        },
    },
}

Bunun yerine takma adı mssql-python çalıştırmak için python_driver ayar ve çıkar driver. Yol mssql-python göz ardı drivereder:

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<database>",
        "USER": "<user_id>",
        "PASSWORD": "<password>",
        "HOST": "<server>",
        "PORT": "1433",
        "OPTIONS": {
            "python_driver": "mssql_python",
        },
    },
}

ENGINE her iki yolda da kalıyor "mssql" . Aynı projedeki takma adlar farklı sürücüler kullanabilir. Davranış farklılıklarının tam listesi için, mssql-django için veritabanı sürücüsünü seç bölümüne bakınız.

Belirtilmedikçe, bu makalenin geri kalanındaki örnekler varsayılan pyodbc yolu gösterir.

Veritabanı bağlantı ayarları

Bu ayarlar bağlantınızı DATABASES ayarlar. Çoğu standart Django ayarlarıdır; İstisnalar belirtilmektedir:

Setting Type Description
ENGINE String olmalıdır "mssql".
NAME String Veritabanı adı. Gerekli.
HOST String Sunucu ana adı veya IP adresi. Adlandırılmış örnekler için format kullanın "server\\instance" .
PORT String Sunucu örneği portu. Boş dize, varsayılan port anlamına gelir.
USER String Veritabanı kullanıcı adı. Verilmezse, Windows Entegre Güvenlik kullanılır.
PASSWORD String Veritabanı kullanıcı şifresi.
AUTOCOMMIT Boolean Django'nun işlem yönetimini devre dışı bırakmak için ayarlandı False . Varsayılan True değeridir.
Trusted_Connection String "yes" Windows Entegre Güvenliği sağlanmadığında USER (varsayılan) olarak ayarlayın. USER Her ikisi de ayarlandığındaPASSWORD, bu kimlik bilgileri öncelikli olur ve Trusted_Connection göz ardı edilir. Windows authentication'ı açıkça devre dışı bırakmak için ayarlandı"no". Bu bir mssql-django uzantı, standart bir Django ortamı değil.
TOKEN String Microsoft Entra doğrulaması için erişim tokenı (örneğin, aracılığıylaazure.identity). Bu bir mssql-django uzantı, standart bir Django ortamı değil.

TEST ayarları

Bu ayarlar, Django'nun test koşucusu tarafından kullanılan test veritabanını kontrol eder:

Setting Type Description
NAME String Test veritabanı adı. Varsayılan: "test_" + NAME.
COLLATION String Test veritabanı için derleme. Varsayılan: örnek varsayılan.
DEPENDENCIES Liste Veritabanının oluşturulma sırası bağımlılıkları.
MIRROR String Test sırasında yansıtmak için bir veritabanı takma adı var.

Example:

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",
        },
        "TEST": {
            "NAME": "test_mydb",
            "COLLATION": "SQL_Latin1_General_CP1_CI_AS",
        },
    },
}

SEÇENEKLER

Sözlük OPTIONS , arka uç spesifik yapılandırma sağlar. Bu ayarları sözlüğe DATABASES["default"]["OPTIONS"] yerleştirin:

Option Type Varsayılan Description
python_driver String Ayarlanmadı Bu takma adı sürücü üzerinden mssql-python bağlamak için ayarlandı"mssql_python". Varsayılan pyodbc sürücü ayarlanmadı veya "pyodbc" korundu. Bkz. Mssql-django için veritabanı sürücüsünü seç.
driver String "ODBC Driver 18 for SQL Server" ODBC sürücüsü kullanmak için. 18 yüklü değilse otomatik olarak Driver 17'ye geri dönüyor. Yolda mssql-python görmezden gelindim.
isolation_level String None İşlem yalıtım düzeyi: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SNAPSHOTveya SERIALIZABLE.
dsn String None DSN olarak adlandırıldı. yerine HOSTkullanılabilir. Yolda mssql-python görmezden gelindim.
host_is_server Boolean False Veri sunucusu adı yerine True doğrudan FreeTDS ile kullanmakHOST/PORTüzere ayarlandıfreetds.conf. Yolda mssql-python görmezden gelindim.
unicode_results Boolean False pyodbc'nin özelliğini unicode_results etkinleştir. Yolda mssql-python görmezden gelindim.
extra_params String None Ek bağlantı dizesi parametreleri formatta"param=value;param=value". Microsoft Entra kimlik doğrulaması için kullanıldı. Yol, mssql-python bunları izin listesine göre doğrular.
collation String None Metin alanı araştırmaları için derleme (örneğin, "Chinese_PRC_CI_AS").
connection_timeout Integer 0 Bağlantı süresi saniyeler içinde (0 = devre dışı bırakıldı). Otomatik duraklatma etkin olan Azure SQL Veritabanı serverless için en az 60 kullanın. Otomatik olarak duraklatılan bir veritabanı, ilk bağlantı denemesinde yeniden etkinleşir ve veritabanı yeniden etkinleşirken bu deneme 40613 hatasıyla başarısız olabilir; bu nedenle uygulama yeniden denemelidir. Daha fazla bilgi için bkz. Otomatik duraklatma ve otomatik devam.
connection_retries Integer 5 Bağlantı yeniden deneme sayısı.
connection_retry_backoff_time Integer 5 Denemeler arasındaki geri çekilme süresi saniyelerde.
query_timeout Integer 0 Sorgu zaman aşımını saniyeler cinsinden (0 = devre dışı bırakıldı).
setencoding / setdecoding Liste None Kodlama ve çözme yapılandırması, seçilen sürücünün bağlantı yöntemlerine aktarılır. Her setdecoding girişin her iki yolda da bir sqltype anahtarı olması gerekir ve aynı giriş her iki sürücüde de işe yarar. mssql-python -99 SQL_WMETADATAkabul eder ve pyodbc reddeder. Pyodbc kodlama ve çözme referansına bakınız.
return_rows_bulk_insert Boolean False Toplu yerleştirmeden geri sıraların döndürülmesine izin verin. Tablolarda tetikleyiciler varsa olmalı False .
datefirst Integer 7 Haftanın ilk günü .SET DATEFIRST 7Pazar (SQL Server varsayılan), 1 Pazartesi.
driver_needs_utf8 Sadece varlık seçeneği Ayarlanmadı ODBC sürücüsü için UTF-8 kodlamasını etkinleştirin. Bu seçenek, anahtar bulunduğunda OPTIONSetkinleştirilir; değer kendisi göz ardı edilir. Genellikle FreeTDS veya varsayılan olarak Latin-1 olan eski unixODBC yapılandırmalarında gereklidir.
driver_charset String None ODBC sürücüsü için açık karakter seti (örneğin, "UTF-8"). Sürücü otomatik kodlama algılamadığında kullanın driver_needs_utf8 .
connection_recovery_interval_msec Float 0.0 Ağ hatasından sonra arka uçun bağlantı kurtarma döngüsünde tekrar deneme girişimleri arasında milisaniyeler beklemek için milisaniyeler. Dengesiz ağ bağlantıları için bu değeri artırın.

Yaygın seçeneklerle bir örnek:

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",
            "extra_params": "Encrypt=yes",
            "isolation_level": "READ COMMITTED",
            "connection_timeout": 30,
            "connection_retries": 3,
            "connection_retry_backoff_time": 5,
            "query_timeout": 60,
        },
    },
}

Arka uç özel ayarlar

Bu ayar, sözlüğün settings.py dışındaki modül düzeyinde DATABASESyer alır:

Setting Type Varsayılan Description
DATABASE_CONNECTION_POOLING Boolean True Sürücü seviyesi bağlantı havuzunu devre dışı bırakmak için ayarlandı False . Hem pyodbc de mssql-python. için geçerlidir.

Example:

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",
        },
    },
}

# Set this to False to disable driver-level connection pooling
DATABASE_CONNECTION_POOLING = False