Quickstart: Django verbinden met SQL Server

In deze quickstart maakt u een Django-project, verbindt u het met een SQL Server-database met behulp van mssql-djangomigraties en voert u eenvoudige gegevensbewerkingen uit met de Django ORM.

Prerequisites

  • Python 3.8 of hoger. Django 6.0 vereist Python 3.12 en nieuwere versies.
  • Microsoft ODBC-stuurprogramma 17 of 18 voor SQL Server. Zie ODBC-stuurprogramma downloaden voor SQL Server.
  • Een SQL Server exemplaar of Azure SQL Database met een geldige aanmelding.

Stap 1: mssql-django installeren

Maak een virtuele omgeving en installeer het pakket:

python -m venv .venv
.venv\Scripts\activate
pip install mssql-django

Stap 2: Een Django-project maken

Maak een nieuw Django-project en -app:

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

Stap 3: De database configureren

Bewerk myproject/settings.py en vervang de standaardinstelling DATABASES .

Verbinding maken met SQL Server

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
    },
}

Waarschuwing

Alleen gebruiken TrustServerCertificate=yes voor lokale ontwikkeling met zelfondertekende certificaten. Gebruik het niet in productie. Hierdoor wordt de validatie van de certificaatketen uitgeschakeld en neemt het man-in-the-middle-risico toe. Installeer een vertrouwd certificaat op de server en maak verbinding met TrustServerCertificate=no.

Verbinding maken met Azure SQL Database

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",
            "extra_params": "Encrypt=yes",
        },
    },
}

Stap 4: Een model definiƫren

myapp/models.pybewerken:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

Voeg "myapp" toe aan INSTALLED_APPS in settings.py:

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "myapp",
]

Stap 5: Migraties uitvoeren

Databasemigraties genereren en toepassen:

python manage.py makemigrations myapp
python manage.py migrate

Controleer of de myapp migratie is toegepast:

python manage.py showmigrations myapp

U zou [X] 0001_initialmoeten zien. Als u [ ] 0001_initial ziet, voert u python manage.py migrate myapp opnieuw uit voordat u doorgaat.

Stap 6: De Django ORM gebruiken

Open de shell van Django. De shell is een interactieve Python sessie met uw Django-project geladen, aangegeven door de >>> prompt.

python manage.py shell

Importeer het model bij de >>> prompt:

from myapp.models import Product

Een record maken:

product = Product.objects.create(name="Widget", price=9.99)
print(f"Created: {product.name} (id={product.pk})")

Records lezen:

for p in Product.objects.all():
    print(f"{p.name}: ${p.price}")

Werk de record bij:

product.price = 12.99
product.save()

De record verwijderen:

product.delete()

Verlaat de shell met exit(). U kunt ook Ctrl+Z gebruiken op Windows of Ctrl+D in Linux of macOS.

Note

Als er een Invalid object name 'myapp_product' fout optreedt, bestaat de myapp_product tabel niet in de database, ook al worden de migratiegeschiedenisclaims 0001_initial van Django toegepast. Sluit de shell af en stel de migratiegeschiedenis opnieuw in en pas deze opnieuw toe:

python manage.py migrate myapp zero --fake
python manage.py migrate myapp

Volgende stap