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?
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 .