fbpx

Datenbank in Django: Verbindung, Einstellungen und erstes Modell

Inhalt
    Add a header to begin generating the table of contents

    Nachdem Du im letzten Beitrag gesehen hast, wie ein Django Projekt strukturiert ist, geht’s heute ab mit der Datenbankkonfiguration von Django. Datenbanken sind das Herzstück jeder Webanwendung, und Django macht es uns super leicht, sie zu verwalten. Lass uns einen detaillierten Blick darauf werfen, wie wir eine Verbindung zur Datenbank herstellen, die Einstellungen anpassen und unser erstes Modell erstellen können. Eine Admin-Oberfläche bringt Django out-of-the-box mit. Also wieder ein Schritt weniger, um den wir uns kümmern müssen!

    https://youtu.be/oH-zYd4PqRw

    Verbindung zur Datenbank herstellen

    SQLite ist eine großartige Wahl für Entwicklungsumgebungen, da es keine separate Datenbankserver-Installation erfordert und direkt in Django integriert ist. Um eine Verbindung zur SQLite-Datenbank herzustellen, benötigen wir keine zusätzlichen Konfigurationen. Django verwendet standardmäßig SQLite, wenn keine spezifische Datenbank-Engine in den settings.py festgelegt ist.

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }

    Damit wird eine Datei mit dem Namen db.sqlite3 direkt im Projektverzeichnis erstellt. Das ist alles. Kein Server, keine Konfiguration, keine Installation. Und später siehst Du, wie einfach und schnell die Datenbank auch initialisiert wird.

    Genauso einfach lässt sich aber auch eine richtige Datenbank für den Produktivbetrieb anbinden:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'meinedatenbank',
            'USER': 'meinbenutzer',
            'PASSWORD': 'geheim',
            'HOST': 'localhost',
            'PORT': '5432',
        }
    }

    Django bietet hier Datenbank Engines an, über die die verschiedenen Datenbank-Typen angebunden werden können. Weitere Schritte sind nicht notwendig. Einmal konfiguriert, kann es Dir egal sein, welche Datenbank unter der Haube läuft. Die Arbeit damit ist für Dich immer die gleiche.

    Django-Einstellungen für die Datenbankverbindung anpassen

    Neben der Grundkonfiguration können wir zusätzliche Einstellungen in settings.py vornehmen, um das Verhalten der Datenbank anzupassen. Das können Datenbank-spezifische Einstellungen sein, aber auch das Auslagern der Anmeldedaten:

    # settings.py
    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "OPTIONS": {
                "read_default_file": "/path/to/my.cnf",
            },
        }
    }
    # my.cnf
    [client]
    database = meinedatenbank
    user = meinbenutzer
    password = geheim
    default-character-set = utf8

    Aber auch Optionen wie Zeitzone, Zeichenkodierung und weitere spezifische Einstellungen. Je nach Projektanforderungen.

    TIME_ZONE = 'Europe/Berlin'
    USE_TZ = True

    Durch die Festlegung der Zeitzone und USE_TZ=True stellen wir sicher, dass unsere Anwendung korrekt mit Datums- und Zeitangaben umgeht.

    Erstes Modell erstellen und migrieren

    Modelle sind essenziell in Django, da sie unsere Datenstrukturen definieren. Du kannst sie Dir wie ein Arbeitsblatt in einer Excel Datei vorstellen. Ein Modell ist eine Tabelle in der Datenbank. Beginnen wir mit einem einfachen Modell für Mitarbeiter, das den Namen eines Mitarbeiters speichert.

    Beispiel Modell “Mitarbeiter”:

    from django.db import models
    
    class Mitarbeiter(models.Model):
        name = models.CharField(max_length=100)
    
        def __str__(self):
            return self.name

    Das Mitarbeiter-Modell definiert ein Textfeld name mit maximal 100 Zeichen. Die __str__ Methode definiert die Textdarstellung jedes Mitarbeiterobjekts in der Admin-Oberfläche.

    Nach der Definition des Modells müssen wir eine Migration durchführen, damit Django die entsprechende Tabelle in der Datenbank erstellt.

    python manage.py makemigrations
    python manage.py migrate

    Der erste Teil makemigrations erzeugt dabei eine neue Migrationsdatei. Migrationen stellen eine Versionierung der Datenbankänderungen dar. Du kannst damit nachvollziehen, was wann an der Datenbank geändert wurde und hat damit auch die Möglichkeit auf verschiedene Stände in der Vergangenheit zu springen.

    Der Befehl migrate führt dann die eigentliche Änderung an der Datenbank durch. In unserem Fall wird damit also die Tabelle Mitarbeiter mit der Spalte name angelegt.

    Jetzt wollen wir unser Modell aber auch sehen! Dafür müssen wir es noch in der Admin-Oberfläche registrieren. Ist das erledigt, sehen wir unsere Mitarbeiter in der Admin-Oberfläche und können sie auch ändern und verwalten.

    Anzeige in der Django-Admin-Oberfläche

    Registrierung in admin.py:

    from django.contrib import admin
    from .models import Mitarbeiter
    
    admin.site.register(Mitarbeiter)

    Damit wird ein Model einfach nur in der Administration dargestellt. Wenn Du detailliertere Konfigurationen vornehmen willst, kann das auch als Klasse formuliert werden:

    from django.contrib import admin
    from .models import Mitarbeiter
    
    @admin.register(Mitarbeiter)
    class MitarbeiterAdmin(admin.ModelAdmin):
        pass

    So hast Du viele weitere Möglichkeiten zur Verfügung, die Darstellung in der Admin-Oberfläche zu beeinflussen. Du kannst die Listendarstellung anpassen, die Sortierung, die Anzeige der Felder und vieles mehr.

    Zusammenfassung

    Damit haben wir die grundlegenden Schritte zur Datenbankkonfiguration in Django erledigt. Du hast gesehen, wie man eine Verbindung zur Datenbank herstellt, die Django-Einstellungen für die Datenbankverbindung anpasst, ein erstes Modell für Mitarbeiter erstellt, das migriert und in der Admin-Oberfläche registriert.

    Hast Du Fragen oder Feedback? Lass es mich wissen – ich helfe gerne weiter!
    Und falls Du den Anfang verpasst hast, gibt es hier noch eine Übersicht, über alle Teile.

    Picture of Ingo Janßen

    Ingo Janßen

    Lerne nicht einfach programmieren. Löse Probleme und automatisiere Aufgaben!

    Das könnte dich auch interessieren

    Nach oben scrollen
    Newsletter Popup Form

    Keine Inhalte mehr verpassen?

    Melde dich direkt für den "Code-Kompass" an und erhalte nützliche Tipps und Informationen direkt in deinen Posteingang.