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