i

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.

Datenbank und Webserver als Dienste hinter einer Firewall[1]

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.

Schichtenarchitektur - DB und Python auf einem Rechner[2]

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.

Schichtenarchitektur - DB und Python auf getrennten Rechnern[3]

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

Suche

v
3.4.3.2
inf-schule.de/datenbanksysteme/zugriff/pythonzugriff/konzept_dbzugriff
inf-schule.de/3.4.3.2
inf-schule.de/@/page/4PAoSUpphJu6L4AI

Rückmeldung geben