mssql-django – nejčastější dotazy

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?

Yes. Balíček mssql-django udržuje Microsoft a je k dispozici na PyPI a GitHub.

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.