Den här artikeln besvarar vanliga frågor om mssql-django Django-serverdelen för SQL Server, Azure SQL Database, Azure SQL Managed Instance och SQL-databasen i Microsoft Fabric.
General
Vad är mssql-django?
Paketet mssql-django är en Microsoft-underhållen Django-databasserverdel för SQL Server. Det gör det möjligt för Django-applikationer att ansluta till SQL Server, Azure SQL Database, Azure SQL Managed Instance och SQL Database i Microsoft Fabric. Version 2.0 och senare versioner ansluter antingen via drivrutinenpyodbc, som är standard, eller Microsoft:s drivrutin.mssql-python
Installera den med pip:
pip install mssql-django
Vilka versioner av Django stöder mssql-django?
Paketversionen mssql-django 2.0 stöder Django 5.2, 6.0 och 6.1. Projekt på Django 3.2 till 5.1 håller sig till version 1.8.0. Kontrollera supportlivscykeln för den fullständiga kompatibilitetsmatrisen.
Vilka versioner av Python stöds?
Paketversionen mssql-django version 2.0 stöder Python 3.10 till 3.14. Den specifika Python-versionen måste också vara kompatibel med din Django-version: Django 5.2 testas med Python 3.10 till 3.13, och Django 6.0 och 6.1 testas med Python 3.12 till 3.14. Se Supportlivscykel för den fullständiga kompatibilitetsmatrisen.
Vilken Python-databasdrivrutin använder mssql-django?
Version 2.0 och senare versioner stödjer två drivrutiner, valda för varje databasalias.
pyodbcär standarden och kräver en externt installerad Microsoft ODBC-drivrutin för SQL Server. För att använda Microsofts mssql-python drivrutin istället, som inte kräver någon separat ODBC-drivrutinsinstallation, lägg till python_driver i aliasets OPTIONS ordbok:
"OPTIONS": {
"python_driver": "mssql_python",
},
Alias som utelämnar alternativet fortsätter att använda pyodbc. För beteendeskillnaderna mellan de två vägarna, se Välj databasdrivrutinen för mssql-django.
Underhålls mssql-django av Microsoft?
Konfiguration
Vilket ENGINE-värde använder jag i settings.py?
Ange ENGINE till "mssql" i konfigurationen DATABASES :
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"HOST": "<your-server>",
},
}
Vilken ODBC-drivrutin ska jag använda?
På standardvägenpyodbc, använd Microsoft ODBC Driver 18 för SQL Server. Det är standard, och backend faller automatiskt tillbaka till ODBC Driver 17 om version 18 inte är installerad. Ange drivrutinen explicit i OPTIONS ordboken endast om du behöver fästa en specifik version, vilket också stänger av fallbacken:
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
Sökvägen mssql-python ignorerar alternativet driver och använder ODBC Driver 18 som pip installerar tillsammans med den.
Hur ansluter jag till Azure SQL Database?
Använd det fullständigt kvalificerade servernamnet med port 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",
},
},
}
Hur använder jag Microsoft Entra autentisering?
Använd extra_params i OPTIONS eller inställningen TOKEN . Inställningen TOKEN fungerar med alla azure.identity autentiseringsuppgifter, inklusive DefaultAzureCredential och ManagedIdentityCredential.
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
token = credential.get_token("https://database.windows.net/.default").token
"TOKEN": token,
Se Microsoft Entra autentisering för alla metoder som stöds.
Features
Har mssql-django stöd för JSONField?
Ja, JSONField stöds på SQL Server 2016 och senare. JSON-data lagras som nvarchar(max) och efterfrågas med hjälp av SQL Server JSON-funktioner. Se JSONField-stöd för sökningar och begränsningar som stöds.
Har mssql-django stöd för tidszonsberoende datum-/tidsvärden?
Yes. När USE_TZ=Trueanvänder Django datatypen datetimeoffset i SQL Server. Om du migrerar en befintlig databas måste du ändra befintliga datetime2-kolumner . Se Stöd för tidszon.
Kan jag anropa lagrade procedurer?
Yes. Använd connection.cursor() med cursor.execute() för att anropa lagrade procedurer. Se Lagrade procedurer för exempel inklusive flera parametrar och resultatuppsättningar.
Returnerar bulk_create ID:n?
Som standard nej. Alternativet return_rows_bulk_insert har standardvärdet False. Ställ in det på True i din databas OPTIONS för att aktivera retur av ID:n efter massinfogning. Det här alternativet måste finnas kvar False för tabeller med utlösare. Se Massåtgärder.
Troubleshooting
Jag får felmeddelandet "ODBC Driver hittades inte". Hur korrigerar jag det?
Installera Microsoft ODBC-drivrutin för SQL Server. I Linux lägger du först till Microsoft APT-lagringsplats och installerar sedan drivrutinen:
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
På Windows laddar du ned installationsprogrammet från Microsoft webbplats. På macOS använder du Homebrew:
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18
Se Installation för fullständiga plattformsspecifika instruktioner.
Varför misslyckas min migrering med "Det går inte att ändra IDENTITY kolumn"?
SQL Server stöder inte ändring av en kolumn till eller från en IDENTITY kolumn (AutoField). Skapa en ny modell med önskad fälttyp och migrera data manuellt. Se Begränsningar och funktioner som inte stöds i mssql-django.
Varför misslyckas bulk_update med null-fält?
Backenden hanterar automatiskt uppdateringar med enbart NULL-värden. Om du behöver kontrollera platshållarvärdet, använd parametern default i bulk_update, som håller NULL uttryck borta från CASE WHEN ... THEN NULL som orsakar SQL Server-typinferensfel:
Product.objects.bulk_update(products, ["description"], default="")
Se Massåtgärder för mer information.