MYSQL Datenbank mit Python

Mit Skripten Datenbankabfragen automatisieren oder Anwendungen programmieren, die auf Datenbanken basieren. Diese Aufgaben lassen sich mit Python wunderbar umsetzen. In diesem Artikel zeige ich euch, wie der Einstieg mit MySQL kombiniert mit Python gelingen kann und ihr eure ersten Datenbankabfragen selbst, in Form von kleinen Programmen, umsetzen könnt.


MySQL ist das wahrscheinlich bekannteste Datenbanksystem und ermöglicht es euch eigene relationale Datenbanken anzulegen und sie zu verwalten. MySQL wird als System auf einem Server installiert und ist dann z.B. über einen MySQL-Client erreichbar. Der Client kann so Abfragen oder Befehle an den Server senden, die dieser bearbeitet und daraufhin dem Client antwortet. Die Kommunikation mit dem Server erfolgt über die Datenbanksprache SQL. Diese Sprache definiert alle Arten von Abfragen, die uns zur Verfügung stehen, um mit der Datenbank zu kommunizieren.

Datenbanksprache SQL

Die wichtigsten SQL-Befehle sind jene, die eine Manipulation der Daten bewirken. Also zum Beispiel ein Befehl, der Daten einfügt oder löscht. Über SQL können wir uns auch zum Beispiel ausgeben lassen, welche Daten in einer Datenbank vorhanden sind.

Auf unserem Server liegen meist mehrere Datenbanken. Diese bestehen aus einzelnen Tabellen, die in Zeilen und Spalten unterteilt sind. Die Spalten sind die Datentypen bzw. Variablen, die wir angelegt haben. Die Zeilen beinhalten dann die eigentlichen Daten.

Als kleines Beispiel können wir uns einen Server einer Firma vorstellen, der Firmendaten und Kundendaten enthält. Als Datenbanken sind dort nun Firmendaten und Kundendaten angelegt. Die Datenbank Firmendaten enthält zwei Tabellen: eine für die Daten der Mitarbeiter und eine für die Lagerbestände.

Wenn nun ein Client auf die Tabelle Mitarbeiter aus der Datenbank Firmendaten zugreifen möchte, kann er dies über einen SQL-Befehl tun. In diesem Beispiel möchte er alle Telefonnummern der Mitarbeiter vom Server gesendet bekommen.

Zuerst wird die Datenbank ausgewählt, auf die sich die Befehle beziehen sollen. Dies erfolgt schon im Vorfeld und wird durch den Befehl: USE [Datenbankname] realisiert.

Nun können wir die Daten und die Tabelle angeben, die wir abfragen möchten.

SELECT Telefonnummer FROM Mitarbeiter 
Bild aus MySQL Workbench

Der MySQL Server erhält diese Anfrage und durchsucht nun die Tabelle nach allen Daten, die in der Spalte Telefonnummer vorhanden sind bzw. die unter dieser Variable angeben sind. Er sendet dem Client diese Daten nun, falls die Tabelle und die Spalte in der Datenbank vorhanden sind.

Eigener MySQL-Server mit XAMPP

Wer nun diese Schritte ausprobieren möchte, benötigt einen eigenen Server, auf dem MySQL läuft. Genau für solche Vorhaben gibt es ein Paket von Programmen, dass es euch ermöglicht, schnell und einfach einen eigenen lokalen Webserver und MySQL-Server auf eurem PC zu starten. Ein Tool, das bei XAMPP mit enthalten ist, ist PhpMyAdmin. Damit könnt ihr direkt auf euren MySQL-Server zugreifen und Datenbanken + Tabellen anlegen. Über diese Webanwendung könnt ihr außerdem eure ersten SQL-Befehle ausprobieren.

Sobald ihr das alles eingerichtet habt, folgt der nächste wichtige Schritt, bei dem ihr lernt eure SQL-Befehle und Abfragen selbst zu programmieren und diese per Skript auszuführen. Ich persönlich habe mehrere Anwendungen in verschiedenen Programmiersprachen geschrieben, die auf Datenbanken zugreifen und denke, dass Python, gerade für den Einstieg, am besten geeignet ist. Aber auch für Fortgeschrittene ist Python eine sehr gute Alternative zu PHP etc. und bietet in Bereichen wie Sicherheit einen Vorteil gegenüber PHP.

Mit Python auf MySQL-Server zugreifen

Nachdem unser MySQL auf unserem PC gestartet wurde, können wir mit Python darauf zugreifen. Da der Server auf unserem PC läuft, nutzt er die IP Adresse localhost bzw. meistens 127.0.0.1 und standardmäßig für MySQL den Port 3306.

Wenn wir nun einen Client programmiere, müssen wir uns mit dem Server verbinden. Dies erfolgt immer über einen Benutzeraccount, der einen Benutzernamen und ein Passwort enthält (sowie bestimmte Rechte etc.). In XAMPP ist ein Account bereits angelegt, der den Namen „root“ und ein leeres Passwort besitzt.

Für Python gibt es ein Modul namens MySQL-Connector. Wie der Name schon verrät, wird dieses Modul zum Verbinden mit unserem MySQL-Server genutzt bzw. zur Kommunikation mit diesem.

Installieren können wir dieses Modul über pip oder über einen Installer von der offiziellen Webseite von MySQL.

Wenn wir das Modul importiert haben, möchten wir eine Verbindung aufbauen. Dafür legen wir ein Objekt vom Typ MySQLConnection an. Die Methode connect(), gibt uns ein solches Objekt zurück. Alternativ könnten wir auch die Klasse MySQLConnection nutzen, um über den Konstruktor, direkt ein solches Objekt zu erschaffen. Die Klasse lässt sich in connection wiederfinden.


meinedatenbank = mysql.connector.connect(host = “127.0.0.1”,
                                         user = “root”, 
                                         password = “”, 
                                         database = “firmendaten”)

Alternative:

meinedatenbank = connection.MySQLConnection(host = “127.0.0.1”,
                                            user = “root”, 
                                            password = “”, 
                                            database = “firmendaten”)

Nachdem die Verbindung steht können wir SQL-Befehle senden. Dafür gibt es eine Klasse namens cursor. Mithilfe dieses Objektes können wir einen SQL-Befehl absenden und die Daten, die der Server uns schickt, in diesem Objekt speichern. Der Cursor „zeigt“ sozusagen immer auf eine Teilmenge der Daten einer Tabelle. Wenn wir nun alle Telefonnummern auswählen möchten, senden wir einen dazu passenden Befehl, woraufhin unser Cursor auf die zurückkommenden Daten „zeigt“ und wir diese benutzten können.

meincursor = meinedatenbank.cursor()

Nun führen wir den beschriebenen Befehl aus:

meincursor.execute(“SELECT telefonnummer FROM mitarbeiter“)

Das Ergebnis lassen wir uns ausgeben, indem wir über das die Liste von Tupeln iterieren, die in meincursor gespeichert wurde. In unserem Fall erhalten wir eine Liste mit genau einem Tupel, in dem die Telefonnummern enthalten sind. Wenn wir zum Beispiel mehr als eine Spalte auswählen (mit SELECT), dann erhalten wir für jede Spalte ein Tupel.

for nummer in meincursor:
          print(nummer[0])
, , , , , , , markiert

Schreibe einen Kommentar

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

Dies ist ein Demo-Shop für Testzwecke — Bestellungen werden nicht ausgeführt. Ausblenden