Django ist ein freies und quelloffenes Web-Framework, das in Python geschrieben ist. Django wurde erstmals 2005 veröffentlicht und verkörpert das Motto „schnelle Entwicklung und sauberes, pragmatisches Design“. Das auf einem Webserver bereitgestellte Framework kann schnell ein Web-Frontend mit umfangreichen Funktionen, Sicherheit und Skalierbarkeit erstellen.
Jede Web-App ist für ihre Inhalte auf Datenbanken angewiesen. Als modernes Framework unterstützt Django eine Reihe von Standard-Datenbankprogrammen, zum Beispiel PostgreSQL, SQLite, MySQL, etc. Diese Anleitung zeigt, wie man eine Django-App mit einer MySQL-Datenbank verbindet.
Voraussetzungen
Um diesem Tutorial zu folgen, müssen Sie bestimmte Voraussetzungen erfüllen, bevor Sie mit Django und der Datenbankverbindung fortfahren:
- Ein geeigneter Webserver. In dieser Anleitung verwenden wir einen Ubuntu-Server.
- Eine ordnungsgemäß konfigurierte Python 3-Entwicklungsumgebung.
- Eine Datenbankanwendung. Hier ist eine ausführliche Anleitung zur Installation und Verwendung von MySQL.
Installation und Konfiguration von Python 3
Django ist in Python geschrieben. Um eine Python-App auszuführen, müssen die Python-Binärdateien im System installiert sein. Bei Ubuntu ist Python standardmäßig vorinstalliert. Hier verwenden wir Python 3. Führen Sie im Terminal die folgenden Befehle aus. Aktualisieren Sie zuerst den APT-Cache und aktualisieren Sie (falls verfügbar) alle installierten Pakete:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 ist direkt über die offiziellen Ubuntu-Paketserver verfügbar. Das Paket
python-is-python3 erstellt einen symbolischen Link für die python-Binärdatei auf
python3 zur einfacheren Verwendung:
|
1 |
$ sudo apt install python3 python-is-python3 |
Überprüfen Sie als Nächstes, ob die Installation erfolgreich war:
|
1 2 |
$ python3 --version $ python --version |
Danach benötigen wir pip. Dies ist der Standard-Paketmanager für Python. Er ist für die Verwaltung zusätzlicher Python-Bibliotheken zuständig, die nicht Teil der Standardbibliothek sind. Beachten Sie, dass wir pip3 (für Python 3) installieren:
|
1 |
$ sudo apt install python3-pip |
Schließlich benötigen wir noch einige zusätzliche Pakete für eine robuste Programmierumgebung:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
Installation und Konfiguration von MySQL
In diesem Abschnitt wird kurz die Installation und Konfiguration von MySQL demonstriert. Es ist in den Standard-Paketquellen von Ubuntu verfügbar:
|
1 |
$ sudo apt install mysql-server |
Wenn die Installation erfolgreich war, läuft MySQL im Hintergrund. Überprüfen Sie, ob es ordnungsgemäß funktioniert:
|
1 |
$ systemctl status mysql |
Der MySQL-Server läuft. Wir können nun sicher zur Entwicklung unserer Django-App übergehen.
Arbeiten mit Django
-
Erstellen der Beispiel-Django-App
Das Grundgerüst unserer Web-App erfordert das Django-Projektskelett. Es enthält alle notwendigen Werkzeuge und Bibliotheken, die zur Erstellung einer robusten Web-App erforderlich sind. Zuerst erstellen wir ein eigenes Verzeichnis für unsere Django-App. Es wird empfohlen, dem Verzeichnis einen aussagekräftigen Namen zu geben, der zur App passt, die wir erstellen wollen. In dieser Demonstration nennen wir es myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Wir benötigen das Python-Modul venv, um eine virtuelle Umgebung im Verzeichnis zu erstellen. Installieren Sie das Modul mit APT:
|
1 |
$ sudo apt install python3-venv |
Navigieren Sie dann in das Verzeichnis und erstellen Sie eine virtuelle Umgebung. Der Übersichtlichkeit halber nannten wir die Umgebung demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
Aktivieren Sie als Nächstes die virtuelle Umgebung, indem Sie das activate-Skript ausführen:
|
1 |
$ . demoapp_env/bin/activate |
Wir werden nun Django in dieser dedizierten virtuellen Umgebung installieren. Pip wird einige zusätzliche Komponenten herunterladen und installieren:
|
1 |
$ pip install django |
Django ist installiert und einsatzbereit. Rufen Sie den Befehl django-admin auf, um ein neues Django-Projekt zu erstellen. Geben Sie der App danach einen passenden Namen:
|
1 |
$ django-admin startproject demoapp |
Es wird ein Demo-Projekt mit den erforderlichen Projektdateien und -verzeichnissen erstellt:
|
1 |
$ ls -l |
Das Projektskelett ist bereit. Als Nächstes müssen wir es richtig konfigurieren, um unser Ziel zu erreichen.
-
Bearbeiten der Django-Projekteinstellungen
Alle Konfigurationen des Projekts sind in der Datei settings.py gespeichert. Sie befindet sich im Django-Projektverzeichnis. Wir beginnen damit, eine geeignete Zeitzone einzustellen und die Hosts aufzulisten, die eine Verbindung zur Django-App herstellen können. Öffnen Sie die Konfigurationsdatei in einem Texteditor:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Scrollen Sie im Skript nach unten und suchen Sie den Eintrag TIME_ZONE. Zur Demonstration ist die Zeitzone auf America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Als Referenz gibt der folgende Befehl alle unterstützten Zeitzonen in Linux aus:
|
1 |
$ timedatectl list-timezones |
Next, scroll to the entry ALLOWED_HOSTS. Er steuert, welche Maschine(n) auf die App zugreifen können. Zur Demonstration enthält er nur localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Speichern Sie dann die Datei und schließen Sie den Editor. Der nächste Befehl wendet die Änderungen an:
|
1 |
$ python manage.py migrate |
Jetzt müssen wir ein Admin-Konto für die Web-App erstellen. Dieses Konto wird für den Zugriff auf die Django-Admin-Oberfläche verwendet. Führen Sie den folgenden Befehl aus:
|
1 |
$ python manage.py createsuperuser |
Es wird nach Benutzername, E-Mail und Passwort gefragt. Die App ist nun bereit, eine Verbindung zur Datenbank herzustellen.
MySQL-Verbindung
-
Installieren von MySQL-Connectoren und Entwicklungsbibliotheken
Um MySQL in die Django-App zu integrieren, benötigen wir einige zusätzliche Python-3-Bibliotheken, die die erforderlichen Tools bereitstellen. Wir verwenden den Datenbank-Connector mysqlclient. Es ist ein Fork von MySQLdb.
Stellen Sie sicher, dass python3-dev installiert ist:
|
1 |
$ sudo apt install python3-dev |
Wir benötigen außerdem einige zusätzliche Python- und MySQL-Header und -Bibliotheken:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Verwenden Sie nach Abschluss der Installation pip, um das Python-Modul mysqlclient zu installieren. Es können einige Fehlermeldungen generiert werden, die ignoriert werden können:
|
1 |
$ pip install mysqlclient |
-
Konfigurieren einer dedizierten Datenbank
Der nächste Schritt ist das Konfigurieren einer dedizierten Datenbank und eines Datenbankbenutzers für unsere Django-App. Starten Sie die MySQL-Shell als root-Benutzer:
|
1 |
$ sudo mysql -u root |
Um alle derzeit verfügbaren Datenbanken zu überprüfen, führen Sie die folgende Abfrage aus:
|
1 |
$ SHOW DATABASES; |
Erstellen wir eine dedizierte Datenbank für unsere Django-App. Geben Sie ihr einen passenden Namen, der mit dem Projektnamen übereinstimmt:
|
1 |
$ CREATE DATABASE demoapp_data; |
Überprüfen Sie anschließend die Erstellung:
|
1 |
$ SHOW DATABASES; |
Erstellen Sie nun einen dedizierten MySQL-Benutzer. Wir werden diesen Benutzer als Eigentümer der Datenbank konfigurieren. Die Django-App verwendet die Anmeldedaten dieses Benutzers, um mit der MySQL-Datenbank zu arbeiten:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Geben Sie dem Benutzer demoapp_user die vollen Berechtigungen für die Datenbank demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Damit die Berechtigungsänderungen wirksam werden, laden Sie die MySQL-Berechtigungstabellen neu:
|
1 |
$ FLUSH PRIVILEGES; |
Die Datenbank ist nun bereit, mit der Django-App verbunden zu werden.
-
Verbinden der Datenbank mit der Django-App
Schließlich konfigurieren wir die Django-App so, dass sie die Datenbank zur Datenspeicherung verwendet. Öffnen Sie das Konfigurationsskript settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Scrollen Sie nach unten zum Eintrag DATABASES und geben Sie den folgenden Code ein:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Speichern Sie die Datei und schließen Sie den Editor. Der nächste Schritt besteht darin, die zuvor im Code beschriebene Konfigurationsdatei einzurichten. Verwenden Sie sudo, um die Textdatei am beschriebenen Speicherort zu öffnen:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Diese Konfigurationsdatei enthält Informationen über die für Django reservierte Datenbank und den Benutzer, den wir im MySQL-Server erstellt haben. Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Damit die Änderungen wirksam werden, müssen wir den MySQL-Server neu starten:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
MySQL-Verbindung testen
Es ist nun an der Zeit zu überprüfen, ob die MySQL-Verbindung ordnungsgemäß funktioniert. Wenn der Django-Server ohne Probleme läuft, funktioniert die Verbindung einwandfrei. Andernfalls stimmt etwas nicht. Wenden Sie zunächst alle am Django-Projekt vorgenommenen Änderungen an:
|
1 |
$ python manage.py migrate |
Wechseln Sie nun in das folgende Projektverzeichnis und starten Sie den Django-Server:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Versuchen Sie als Nächstes, über einen Webbrowser auf den Server zuzugreifen:
|
1 |
$ http://<server_ip_address>:8000 |
Voila! Wir sind erfolgreich auf der Django-Erfolgsseite gelandet. Dies bestätigt auch, dass die MySQL-Verbindung ordnungsgemäß funktioniert. Nach Abschluss der Aufgabe können Sie die virtuelle Umgebung sicher verlassen:
|
1 |
$ deactivate |
Fazit
In dieser Anleitung haben Sie die Grundlagen der Kombination von Django und MySQL kennengelernt. Wir haben eine Django-App erstellt und gezeigt, wie man sie mit einer MySQL-Datenbank verbindet. Das Geheimnis liegt in der Django-Konfigurationsdatei settings.py. Wir haben auch einige grundlegende Einstellungen wie ALLOWED_HOSTS und TIME_ZONE geändert. Django ist unglaublich flexibel. Neben MySQL unterstützt es auch andere SQL-Server wie PostgreSQL, Server-Engines wie Nginx usw.
Sie können sich auch unsere Anleitungen zu den Best Practices für die Installation, Konfiguration und Arbeit mit Django ansehen:
- Installation des Django-Webframeworks auf Ubuntu 20.04
- Einrichten von Django mit PostgreSQL, Nginx und Gunicorn auf Ubuntu 20.04
- Erstellen von Django-Modellen: Ein Tutorial
Viel Spaß beim Programmieren!





Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.