Fachkonzept - Datenbankzugriff
Schritte zum Zugriff auf die Daten
Drei Schritte sind im Wesentlichen dazu notwendig, um die Daten einer Datenbank auszulesen. Diese Schritte führst du aus, wenn du z.B. phpMyAdmin benutzt. Und in Python sind diese dann natürlich auch notwendig:
1. Schritt - Verbindung aufbauen
con = mysql.connector.connect(host=Servername)
Mit diesem Befehl verbindet sich das Python-Programm mit dem Datenbankserver.
Als Ergebnis erhältst du ein Objekt (die Variable con
verweist darauf), das im
Folgenden alle Operationen mit der Datenbank abwickelt.
Der Server bietet den Zugriff auf das Datenbanksystem als Dienst für andere Rechner an. Das ist so ähnlich, wie ein Webserver Webseiten für andere Rechner anbietet. Und genauso wie dieser, gibt es einen bestimmten Port (eine "Tür"), an der der Datenbankserver Aufträge an die Datenbank erwartet. Das ist auch der Grund, warum du beim Starten der MySQL-Datenbank vielleicht eine Warnmeldung deiner Firewall erhalten hast.
2. Schritt - Wer bin ich?
con.cmd_change_user(username = Benutzer, password = Passwort)
Datenbanken enthalten mitunter sensible Daten und nicht jeder darf alles mit diesen Daten tun. Deshalb muss bei einer Verbindung zum Datenbanksystem ein Datenbank-Benutzer angegeben werden. Nur mit dessen Rechten kann auch das Python-Programm mit den Daten auf dem Datenbanksystem arbeiten. Unerlaubte Befehle werden dann abgelehnt und führen zu einer Fehlermeldung.
3. Schritt - Datenbank wählen
con.database = Datenbank
Ein Benutzer hat in der Regel Zugriff auf mehrere Datenbanken. Beim Arbeiten mit phpMyAdmin musst du im linken Teil immer die Datenbank auswählen. Python muss das genauso wie du mit dem oben gezeigten Befehl.
Es geht etwas einfacher...
Alle gezeigten Schritte kann die Python-Bibliothek auch mit einem Aufruf erledigen - und das ist mit neueren Versionen des MySQL-Connectors die einzige Möglichkeit:
con = mysql.connector.connect(
host = Servername,
user = Benutzer,
password = Passwort,
database = Datenbank )
Bei der Verwendung von SQLite ist dies etwas einfacher, da formal kein "connect" (und kein "disconnect") zu einem anderen
Datenbank-Server gemacht wird. Hier wird nur eine lokale Datenbank-Datei geöffnet, die damit auch nur für deinen Benutzer zugreifbar ist.
So entfällt die Notwendigkeit von Benutzername und Passwort - du besitzt ja sowieso alle Daten.
Exkurs - Was meint eigentlich "localhost"?
Wahrscheinlich nutzt du als Server die Angabe "localhost". Doch was bedeutet das?
"localhost" meint, dass das Datenbanksystem auf deinem eigenen Rechner läuft. Das folgende Bild
soll das noch einmal verdeutlichen. Python als Anwendungsprogramm verwendet die oben beschriebene
Bibliothek, um auf das Datenbanksystem auf deinem Rechner zuzugreifen. Anstatt localhost könntest
du auch die IP-Adresse deines Rechners angeben oder eine spezielle IP-Adrese (127.0.0.1), die immer
den eigenen Rechner meint.
Bei größeren Systemen befindet sich die Datenbank auf einem eigenen Server - vielleicht hat ja
auch dein Lehrer einen zentralen Datenbankserver für euch eingerichtet.
In diesem Fall musst du die IP-Adresse (evtl. geht auch der Name) des Servers angeben. Dabei ist
auch noch zu beachten, dass dein Datenbankbenutzer entsprechende Rechte für den externen Zugriff
bekommen hat.
Gerade wenn die Datenbank nur über das Netzwerk angesprochen werden kann, sollte folgendes
Grundprinzip für den Datenbankzugriff unbedingt beachtet werden:
Es sollte grundsätzlich nur die Daten ausgelesen werden, die auch wirklich im
Programm benötigt werden.
Konkret also schon im "SELECT" nur die Datensätze und Spalten auswählen, die für die Verarbeitung notwendig sind.
Quellen
- [1]: Datenbank als Dienst - Urheber: TM - Lizenz: inf-schule.de
- [2]: Schichtenarchitektur1 - Urheber: TM - Lizenz: inf-schule.de
- [3]: Schichtenarchitektur2 - Urheber: TM - Lizenz: inf-schule.de