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 a Django alkalmazások számára, hogy csatlakozzanak az SQL Server-hez, Azure SQL Database-hez, Azure SQL Managed Instance-hoz és SQL adatbázishoz a Microsoft Fabric-ben. A 2.0-s és újabb verziók vagy az alapértelmezett pyodbc illesztőprogramon, vagy a Microsoft mssql-python illesztőprogramján keresztül csatlakoznak.

Telepítse a következő pipkel:

pip install mssql-django

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

A mssql-django csomagverzió 2.0 támogatja a Django 5.2, 6.0 és 6.1 verziókat. A Django 3.2-től 5.1-ig terjedő projektek az 1.8.0-as verzión maradnak. Ellenőrizze a teljes kompatibilitási mátrix támogatási életciklusát .

A Python mely verziói támogatottak?

A mssql-django csomagverzió 2.0 támogatja a Python 3.10-től 3.14-ig. Az adott Python verziónak kompatibilisnek kell lennie a Django verzióddal is: a Django 5.2-t Python 3.10-től 3.13-ig teszteljük, míg a Django 6.0-t és 6.1-et Python 3.12-től 3.14-ig teszteljük. Tekintse meg a teljes kompatibilitási mátrix támogatási életciklusát .

Melyik Python adatbázis illezőprogramot használja az mssql-django?

A 2.0-s és az újabb verziók két illesztőprogramot támogatnak, amelyek adatbázis-álnevenként választhatók ki. pyodbcalapértelmezett megoldás, és külsőleg telepített Microsoft ODBC illesztőprogramot igényel az SQL Server számára. Ha helyette a Microsoft mssql-python illesztőprogramját szeretnéd használni, amelyhez nincs szükség külön ODBC illesztőprogram telepítésére, add hozzá a python_driver elemet ennek az álnévnek a OPTIONS szótárához:

"OPTIONS": {
    "python_driver": "mssql_python",
},

Azok az álnevek, amelyek nem adják meg az opciót, továbbra is a(z) pyodbc értéket használják. A két út közötti viselkedésbeli különbségekért lásd: Válassza ki az adatbázis illesztőprogramot mssql-django számára.

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?

Az alapértelmezett pyodbc útvonalon használd a Microsoft ODBC Driver 18 for SQL Server-t. Ez az alapértelmezett, és a háttérrendszer automatikusan vissza a ODBC Driver 17-re tér vissza, ha a 18-as verzió nincs telepítve. Az illesztőprogramot csak akkor add meg kifejezetten a(z) OPTIONS szótárban, ha egy adott verzióhoz kell kötni, ami a visszaállási mechanizmust is kikapcsolja:

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

Az mssql-python elérési út figyelmen kívül hagyja a(z) driver beállítást, és azt az ODBC Driver 18-at használja, amelyet a(z) pip telepít vele.

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?

A háttérrendszer automatikusan kezeli az összes NULL frissítést. Ha a helymeghatározó értéket kell irányítani, használd a default paramétert , bulk_updateamely kizárja NULL azokat CASE WHEN ... THEN NULL a kifejezéseket, 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 .