AllgemeinBlogDjangoLinuxPython

Django mit Mysql Datenbank

Veröffentlicht

Django

Django benötigt für das Model Prinzip eine eigene Datenbank. Standardmäßig hat es die SQLite Datenbank mit am Board , jedoch kann die Datenbank auch auf eine besser skalierbare Datenbank wie PostgreSQL, MySQL oder Oracle laufen.
Ich habe mich gegen die SQLite Version und für die MySQL Datenbank entschieden, daher gehe ich in diesem Beitrag auf die MySQL Integrierung ein. SQLite sollte unter keinen Umständen in einer produktiv Umgebung genutzt werden!

Um Mysql verwenden zu können, benötigen wir ein DB API Treiber wie mysqlclient. Mysqlclient ist ebenfalls die bevorzugte Wahl von Django. Die dazugehörige Dokumentation von Django kann unter dem Tutorial Part2 gefunden werden. Hier wird explizit auf die Integration der Datenbank eingegangen, wie eine anderen Datenbank Version verwendet werden kann und wie Models erzeugt und behandelt werden.

Den Link zum Tutorial findet ihr hier: https://docs.djangoproject.com/en/2.2/intro/tutorial02/

Um die DB API einrichten zu können, müssen einige Abhängigkeiten installiert werden:

sudo apt-get install python3-dev default-libmysqlclient-dev

gefolgt von dem eigentlichen mysqlclient Paket, welches mit pip installiert wird

pip3 install mysqlclient

Nach der Installation kann die Datenbank, mit den MySQL Utilities, eingerichtet werden.

CREATE DATABASE <dbname> CHARACTER SET utf8;

Auch der Datenbank User sollte nur Berechtigungen auf die für Django bereitgestellte Datenbank haben. Dafür bedienen wir uns bei dem grant Befehl von mysql.

GRANT ALL PRIVILEGES ON <database_name>.* TO '<username>'@'localhost';

Die Django Settings müssen für die MySQL Benutzung angepasst und bearbeitet werden. Dafür müssen wir die Settings.py vom Django-Projekt öffnen und wie unten angegeben, abändern.

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

Die my.cnf Datei beinhaltet die Zugangsdaten für die Datenbank,  um eine Verbindung mit der Datenbank herzustellen.

# my.cnf
[client]	
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

Für jede installierte App in Settings.py, auch wenn es die Standardapps von Django sind, wird eine eigene Tabelle erstellt. Nachdem die API und die Einstellungen angepasst worden sind, kann die eigentliche Django Migration gestartet werden.

sudo python3 manage.py migrate

Die migrate Funktion schaut in der Settings.py nach allen installierten Apps und erstellt eine Tabelle in der Datenbank. Dieser Befehl sollte ohne Unterbrechung durchlaufen.

MySQL ist nach erfolgreicher Migrierung die Hauptdatenbank.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.