veelgestelde vragen over mssql-django

In dit artikel vindt u antwoorden op veelgestelde vragen over de mssql-django Django-back-end voor SQL Server, Azure SQL Database, Azure SQL Managed Instance en SQL-database in Microsoft Fabric.

General

Wat is mssql-django?

Het mssql-django pakket is een Microsoft onderhouden Django-databaseback-end voor SQL Server. Hiermee kunnen Django-toepassingen verbinding maken met SQL Server, Azure SQL Database, Azure SQL Managed Instance en SQL-database in Microsoft Fabric met behulp van het pyodbc-stuurprogramma.

Installeer het met pip:

pip install mssql-django

Welke versies van Django ondersteunt mssql-django?

Het mssql-django pakket v1.7 ondersteunt Django 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 en 6.0. Controleer de ondersteuningslevenscyclus voor de volledige compatibiliteitsmatrix.

Welke versies van Python worden ondersteund?

Het mssql-django pakket ondersteunt Python 3.8 en hoger. De specifieke Python-versie moet ook compatibel zijn met uw Django-versie. Django 5.0 vereist bijvoorbeeld Python 3.10 en nieuwere versies en Django 6.0 vereist Python 3.12 en nieuwere versies. Zie de ondersteuningslevenscyclus voor de volledige compatibiliteitsmatrix.

Wordt mssql-django onderhouden door Microsoft?

Ja. Het mssql-django pakket wordt onderhouden door Microsoft en is beschikbaar op PyPI en GitHub.

Configuratie

Welke ENGINE-waarde gebruik ik in settings.py?

Stel ENGINE in op "mssql" in uw DATABASES-configuratie:

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

Welk ODBC-stuurprogramma moet ik gebruiken?

Gebruik Microsoft ODBC-stuurprogramma 18 voor SQL Server. Dit is de standaardinstelling in mssql-django 1.7 en hoger en de back-end wordt automatisch teruggezet naar ODBC-stuurprogramma 17 als versie 18 niet is geïnstalleerd. Geef het stuurprogramma alleen expliciet op in de OPTIONS woordenlijst als u een specifieke versie wilt vastmaken:

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

Hoe maak ik verbinding met Azure SQL Database?

Gebruik de volledig gekwalificeerde servernaam met poort 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",
        },
    },
}

Hoe gebruik ik Microsoft Entra verificatie?

Gebruik extra_params in OPTIONS of de TOKEN instelling. De TOKEN instelling werkt met elke azure.identity referentie, inclusief DefaultAzureCredential en ManagedIdentityCredential.

from azure.identity import DefaultAzureCredential

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

"TOKEN": token,

Zie Microsoft Entra verificatie voor alle ondersteunde methoden.

Features

Ondersteunt mssql-django JSONField?

Ja, JSONField wordt ondersteund op SQL Server 2016 en hoger. JSON-gegevens worden opgeslagen als nvarchar(max) en opgevraagd met behulp van de JSON-functies van SQL Server. Zie JSONField-ondersteuning voor ondersteunde zoekacties en beperkingen.

Ondersteunt mssql-django tijdzonebewuste datum/tijd?

Ja. Wanneer USE_TZ=Truegebruikt Django het gegevenstype datetimeoffset in SQL Server. Als u een bestaande database migreert, moet u bestaande datum/tijd2-kolommen wijzigen. Zie ondersteuning voor tijdzones.

Kan ik opgeslagen procedures aanroepen?

Ja. Gebruik connection.cursor() met cursor.execute() om stored procedures aan te roepen. Zie Opgeslagen procedures voor voorbeelden, waaronder meerdere parameters en resultatensets.

Geeft bulk_create ID’s terug?

Standaard niet. De return_rows_bulk_insert optie wordt standaard ingesteld op False. Stel deze in uw database OPTIONS in op True om na een bulk insert ID's te laten teruggeven. Deze optie moet behouden blijven False voor tabellen met triggers. Zie Bulkbewerkingen.

Troubleshooting

Ik krijg de melding "ODBC-driver niet gevonden." Hoe kan ik dit oplossen?

Installeer het ODBC-stuurprogramma voor Microsoft voor SQL Server. Voeg in Linux eerst de Microsoft APT-opslagplaats toe en installeer vervolgens het stuurprogramma:

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

Download op Windows het installatieprogramma van de Microsoft website. In macOS gebruikt u Homebrew:

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

Zie De installatie voor volledige platformspecifieke instructies.

Waarom mislukt mijn migratie met 'Kan kolom niet wijzigen IDENTITY '?

SQL Server biedt geen ondersteuning voor het wijzigen van een kolom naar of van een IDENTITY (AutoField)-kolom. Maak een nieuw model met het gewenste veldtype en migreer gegevens handmatig. Zie Beperkingen en niet-ondersteunde functies in mssql-django.

Waarom mislukt bulk_update met null-velden?

In mssql-django 1.7 verwerkt de back-end automatisch alle NULL-updates. Gebruik in eerdere versies de parameter default in bulk_update om NULL in expressies van CASE WHEN ... THEN NULL te vermijden; deze veroorzaken type-inferentiefouten in SQL Server:

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

Zie Bulkbewerkingen voor meer informatie.