mssql-django – Gyakori kérdések

Ez a cikk a mssql-django SQL Serverhez, az Azure SQL Database-hez, az Azure SQL Managed Instance-hez és a Microsoft Fabric SQL-adatbázisához készült Django-háttérrendszerrel kapcsolatos gyakori kérdésekre ad választ.

General

Mi az mssql-django?

A mssql-django csomag a Django SQL Serverhez való, a Microsoft által karbantartott adatbázis-háttérrendszere. Lehetővé teszi, hogy a Django-alkalmazások a pyodbc-illesztővel az SQL Serverhez, az Azure SQL Database-hez, az Azure SQL Managed Instance-hez és a Microsoft Fabric SQL-adatbázisához csatlakozzanak.

Telepítse a következő pipkel:

pip install mssql-django

A Django mely verzióit támogatja az mssql-django?

Az mssql-django 1.7-ös csomag támogatja a Django 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 és 6.0 verziót. Ellenőrizze a teljes kompatibilitási mátrix támogatási életciklusát .

A Python mely verziói támogatottak?

A mssql-django csomag támogatja a Python 3.8-at és újabb verziót. Az adott Python verziónak kompatibilisnek kell lennie a Django verziójával is. A Django 5.0-hoz például Python 3.10-s és újabb verziókra van szükség, a Django 6.0-hoz pedig Python 3.12-s és újabb verziókra van szükség. Tekintse meg a teljes kompatibilitási mátrix támogatási életciklusát .

Az mssql-django-t Microsoft tartja fenn?

Yes. A mssql-django csomagot a Microsoft tartja karban, és a PyPI-n és GitHub érhető el.

Konfiguráció

Milyen MOTORértéket használok a settings.py?

Állítsa a(z) ENGINE értékét "mssql" értékre a(z) DATABASES konfigurációban:

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

Melyik ODBC-illesztőt használjam?

Használja a Microsoft ODBC Driver 18 illesztőprogramot az SQL Serverhez. Ez az alapértelmezett az 1.7-es és újabb verziókban mssql-django , és a háttérrendszer automatikusan visszakerül az ODBC-illesztőprogram 17-es verziójára, ha a 18-es verzió nincs telepítve. Csak akkor adja meg explicit módon az illesztőprogramot a OPTIONS szótárban, ha egy adott verziót kell rögzítenie:

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

Hogyan csatlakozhatok Azure SQL Database?

Használja a teljesen minősített kiszolgálónevet a 1433-as porttal:

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

Hogyan használhatom Microsoft Entra hitelesítést?

Használja a(z) extra_params elemet a(z) OPTIONS területen vagy a(z) TOKEN beállításban. A TOKEN beállítás bármilyen azure.identity hitelesítő adattal működik, köztük a(z) DefaultAzureCredential és ManagedIdentityCredential.

from azure.identity import DefaultAzureCredential

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

"TOKEN": token,

Tekintse meg Microsoft Entra hitelesítést az összes támogatott módszerhez.

Features

Támogatja az mssql-django a JSONFieldet?

Igen, JSONField a 2016-os és újabb SQL Server támogatott. A JSON-adatok nvarchar(max) formátumban vannak tárolva, és lekérdezhetők SQL Server JSON-függvényeivel. A támogatott kereséseket és korlátozásokat lásd a JSONField támogatásában .

Támogatja az mssql-django az időzóna-tudatos dátumidőket?

Yes. Amikor USE_TZ=True, a Django az SQL Serverben a datetimeoffset adattípust használja. Ha egy meglévő adatbázist migrál, módosítania kell a datetime2 meglévő oszlopait. Lásd : Időzóna támogatása.

Meghívhatom a tárolt eljárásokat?

Yes. Tárolt eljárások meghívásához használja a(z) connection.cursor() elemet a(z) cursor.execute() elemmel együtt. Lásd a tárolt eljárásokat , például több paramétert és eredményhalmazt.

A bulk_create visszaad azonosítókat?

Alapértelmezés szerint nem. A return_rows_bulk_insert beállítás alapértelmezés szerint a következő.False True Állítsa be az adatbázisban OPTIONS úgy, hogy engedélyezze a visszatérési azonosítókat a tömeges beszúrás után. Ennek a beállításnak az eseményindítókat tartalmazó táblák esetében is meg kell maradnia False . Lásd a Tömeges műveletek című részt.

Troubleshooting

Ezt a hibaüzenetet kapom: „Az ODBC-illesztőprogram nem található.” Hogyan lehet kijavítani?

Telepítse a Microsoft ODBC-illesztőprogramot a SQL Serverhez. Linuxon először adja hozzá a Microsoft APT-adattárat, majd telepítse az illesztőprogramot:

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

A Windows töltse le a telepítőt a Microsoft webhelyről. MacOS rendszeren használja a Homebrew-t:

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

A teljes platformspecifikus utasításokért tekintse meg a telepítést .

Miért hiúsul meg a migrálás a "Nem módosítható IDENTITY oszlop" hibával?

Az SQL Server nem támogatja, hogy egy oszlopot IDENTITY (automatikus mező) oszloppá vagy abból módosítsanak. Hozzon létre egy új modellt a kívánt mezőtípussal, és migrálja manuálisan az adatokat. Lásd az mssql-django korlátozásait és nem támogatott funkcióit.

Miért hiúsul meg bulk_update null értékű mezőkkel?

Az 1.7-ben mssql-django a háttérrendszer automatikusan kezeli a null értékű frissítéseket. A korábbi verziókban használja a(z) default paramétert a bulk_update elemben a CASE WHEN ... THEN NULL kifejezésekben található NULL elkerülése érdekében, amelyek SQL Server típus-következtetési hibákat okoznak:

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

Részletekért lásd a Tömeges műveletek című témakört .