Tento článek odpovídá na nejčastější dotazy týkající se back-endu mssql-django Django pro SQL Server, Azure SQL Database, Azure SQL Managed Instance a databázi SQL v Microsoft Fabric.
Obecné
Co je mssql-django?
Balíček mssql-django je back-end databáze Django spravovaný Microsoft pro SQL Server. Umožňuje aplikacím Django připojit se k SQL Server, Azure SQL Database, Azure SQL Managed Instance a databázi SQL v Microsoft Fabric pomocí ovladače pyodbc.
Nainstalujte ho pomocí pip:
pip install mssql-django
Jaké verze Django podporuje mssql-django?
Balíček mssql-django verze 1.7 podporuje Django 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 a 6.0. Zkontrolujte životní cyklus podpory pro úplnou matici kompatibility.
Jaké verze Python se podporují?
Balíček mssql-django podporuje Python 3.8 a novější. Konkrétní verze Python musí být také kompatibilní s vaší verzí Django. Například Django 5.0 vyžaduje Python 3.10 a novější verze a Django 6.0 vyžaduje Python 3.12 a novější verze. Viz životní cyklus podpory pro úplnou matici kompatibility.
Udržuje Microsoft mssql-django?
Konfigurace
Jakou hodnotu ENGINE mám použít v settings.py?
Nastavte v konfiguraci DATABASES položku ENGINE na "mssql":
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"HOST": "<your-server>",
},
}
Který ovladač ODBC mám použít?
Pro SQL Server použijte ovladač Microsoft ODBC 18. Jedná se o výchozí hodnotu ve mssql-django verzi 1.7 a novější a back-end se automaticky vrátí k ovladači ODBC 17, pokud není nainstalovaná verze 18. Driver explicitně zadávejte v slovníku OPTIONS pouze pokud potřebujete pevně nastavit konkrétní verzi:
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
Jak se připojím k Azure SQL Database?
Použijte plně kvalifikovaný název serveru s portem 1433:
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",
},
},
}
Jak používat ověřování Microsoft Entra?
Použijte extra_params v OPTIONS nebo v nastavení TOKEN. Toto TOKEN nastavení funguje s libovolnými azure.identity přihlašovacími údaji, včetně DefaultAzureCredential a ManagedIdentityCredential.
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
token = credential.get_token("https://database.windows.net/.default").token
"TOKEN": token,
Všechny podporované metody najdete v článku ověřování Microsoft Entra.
Features
Podporuje mssql-django JSONField?
Ano, JSONField podporuje se v SQL Server 2016 a novějších verzích. Data JSON se ukládají jako nvarchar(max) a dotazuje se pomocí funkcí JSON SQL Server. Informace o podporovaných vyhledáváních a omezeních najdete v tématu Podpora JSONField .
Podporuje mssql-django data a časy s informací o časovém pásmu?
Yes. Když USE_TZ=TrueDjango používá datový typ datetimeoffset v SQL Server. Pokud migrujete existující databázi, musíte změnit existující sloupce datetime2 . Viz podpora časových pásem.
Můžu volat uložené procedury?
Yes. Použijte connection.cursor() s cursor.execute() k volání uložených procedur. Příklady, včetně více parametrů a sad výsledků, najdete v části Uložené procedury .
Vrací bulk_create identifikátory?
Ve výchozím nastavení ne. Možnost return_rows_bulk_insert má výchozí hodnotu False. Nastavte to na True ve vaší databázi OPTIONS, aby se po hromadném vložení vracela ID. Tato možnost musí zůstat False u tabulek s triggery. Viz Hromadné operace.
Troubleshooting
Zobrazuje se mi zpráva „Ovladač ODBC nebyl nalezen.“ Jak ji opravím?
Nainstalujte ovladač MICROSOFT ODBC pro SQL Server. V Linuxu nejprve přidejte úložiště Microsoft APT a pak nainstalujte ovladač:
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
Na Windows stáhněte instalační program z webu Microsoft. V systému macOS použijte Homebrew:
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18
Kompletní pokyny pro konkrétní platformu najdete v tématu Instalace .
Proč migrace selže s chybou "Nejde změnit IDENTITY sloupec"?
SQL Server nepodporuje změnu sloupce na sloupec IDENTITY (AutoField) nebo ze sloupce IDENTITY (AutoField). Vytvořte nový model s požadovaným typem pole a migrujte data ručně. Viz Omezení a nepodporované funkce v mssql-django.
Proč bulk_update selhává u nulovatelných polí?
V mssql-django 1.7 backend automaticky zpracovává aktualizace, v nichž jsou všechny hodnoty NULL. V dřívějších verzích použijte parametr default v bulk_update, abyste se vyhnuli NULL ve výrazech CASE WHEN ... THEN NULL, které způsobují chyby při odvozování typů v SQL Serveru:
Product.objects.bulk_update(products, ["description"], default="")
Podrobnosti najdete v části Hromadné operace.