Weiter zum Inhalt

MySQL in Python Tutorial: Einstieg

In diesem Tutorial lernst du, wie du MySQL installierst, Datenbanken erstellst und Tabellen anlegst – und vieles mehr.
Aktualisiert 18. Sept. 2026  · 13 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

MySQL ist ein relationales Datenbankmanagementsystem (RDBMS), das nach dem Client-Server-Prinzip arbeitet. Das bedeutet: Ein Computer (der „Client“), der auf Daten zugreifen will, muss sich dazu mit dem RDBMS-Server verbinden. 

Python ist hingegen eine beliebte, höherstufige und universell einsetzbare Programmiersprache. Entwickler nutzen sie, um Websites und Software zu bauen, Aufgaben zu automatisieren und Daten zu analysieren. Python kann außerdem mit verschiedenen Datenbanken wie MySQL verwendet werden. Python unterstützt Datenabfragen, Data Definition Language und Datenmanipulation. In diesem Tutorial erfährst du, wie du MySQL in Python nutzt. 

Erste Schritte mit MySQL in Python

Um MySQL in Python aus deinem DataCamp-Workspace zu verwenden, musst du über Workspace-Integrationen eine Verbindung zu einer bestehenden gehosteten Datenbank herstellen. Wir bauen unsere Datenbank hier von Grund auf, daher verwenden wir den DataCamp-Workspace in diesem Tutorial nicht. 

Folge für dieses Tutorial diesen beiden Schritten: 

  1. Installiere den MySQL-Server, der die Dienste zur Verwaltung der Datenbank bereitstellt. Du kannst ihn von der MySQL-Website herunterladen und installieren. 
  2. Installiere den MySQL-Connector, einen Python-Treiber, mit dem du deine Python-Anwendungen mit deinen MySQL-Datenbanken verbindest; die Installation erfolgt einfach mit pip (dem Paketmanager von Python).

Sobald der MySQL-Server installiert ist: 

  1. Klonst du dieses GitHub-Repository auf deinen Rechner – so klonst du ein Repository auf GitHub.
  2. Erstelle und aktiviere eine virtuelle Umgebung – Erstellung virtueller Umgebungen
  3. Installiere die benötigten Pakete mit pip install -r requirements im Terminal.  
  4. Erstelle eine .env-Datei im Hauptverzeichnis.
    1. Speichere das Passwort zur Authentifizierung deines Users am MySQL-Server in einer Variablen namens PASSWORD – Wenn du kein Root-Passwort vergeben hast, verlangt der Server kein Passwort.  

Hinweise

Jede Datei im Repository ist mit einer Nummer versehen, die ihre Reihenfolge in diesem Tutorial angibt.

Zum Beispiel zeigt 04_data_insertion.py an, dass das Modul als viertes ausgeführt werden soll (nach den Modulen 01–03). Du kannst auch den gesamten Code ausführen, indem du 00_execute_all.py startest.

Eine Verbindung herstellen

MySQL folgt einem Server-Client-Modell; Immer wenn ein Client auf Daten zugreifen will, muss er sich mit dem RDBMS verbinden. 

Die Verbindung zum Server stellst du mit der Methode connect() aus dem Modul mysql.connector her…

import os

from mysql import connector
from dotenv import load_dotenv


load_dotenv()
PASSWORD = os.getenv("PASSWORD")

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD
    ) as database:
        print(database)
except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x00000188FA653970>
"""

Den vollständigen Umfang der Argumente für die Methode connect() findest du in der Dokumentation

Drei Dinge sind bei diesem Code wichtig: 

  1. Exceptions und Fehlerbehandlung: Es ist gute Praxis, Fehler beim Aufbau der Verbindung zum MySQL-Server abzufangen. 
  2. Verbindung schließen: Wir haben einen Context Manager verwendet und daher die Verbindung nicht explizit mit close() geschlossen. Allgemein gilt: Verbindungen sollten nach der Arbeit mit der Datenbank geschlossen werden, um unerwartete Fehler zu vermeiden. 
  3. Sensible Daten: Nutze Umgebungsvariablen, um sensible Informationen zu verbergen, da deren Weitergabe ein Sicherheitsrisiko darstellt. 

Jetzt hast du die Verbindung zwischen deinem Python-Programm und dem MySQL-Server aufgebaut und kannst dich mit einer der vielen Datenbanken auf dem Server verbinden. Aktuell existiert noch keine; wir müssen also eine neue Datenbank auf dem Server anlegen. Wie das geht, siehst du im nächsten Abschnitt. 

Hinweis: Immer wenn auf die Datenbank zugegriffen wird, muss eine Verbindung zum Server aufgebaut werden. In den weiteren Codebeispielen lassen wir diesen Teil weg, um Wiederholungen im Tutorial zu vermeiden. Im Code-Repository ist er aber enthalten.

Werde Dateningenieur

Baue Python-Kenntnisse auf, um ein professioneller Dateningenieur zu werden.
Jetzt Kostenlos Loslegen

Eine neue Datenbank in MySQL mit Python erstellen

Ab hier brauchst du SQL-Kenntnisse; der Kurs Introduction to SQL von DataCamp ist ein guter Einstieg, um schnell auf Stand zu kommen. 

So erstellst du typischerweise eine Datenbank in MySQL: 

CREATE DATABASE book_ratings;

Um dieselbe Abfrage in Python auszuführen, musst du eine Instanz des cursor()-Objekts erstellen. 

Über das cursor()-Objekt kannst du SQL-Befehle als String an die Methode execute() übergeben, die den Code ausführt. 

Lass uns eine Datenbank namens „book_ratings“ erstellen…

create_db = "CREATE DATABASE book_ratings"
with database.cursor() as cursor:
    cursor.execute(create_db)

Hinweis: Wenn du diesen Code mehrfach ausführst, erhältst du eine Fehlermeldung, dass die Datenbank bereits existiert.

So prüfst du, welche Datenbanken auf einem Server existieren:

show_existing_db = "SHOW DATABASES"

with database.cursor() as cursor: 
    cursor.execute(show_existing_db)
    for db in cursor:
        print(db)

"""
('book_ratings',)
('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)
"""

Der obige Code gibt die Namen aller Datenbanken aus, die aktuell auf unserem MySQL-Server vorhanden sind. Es sind mehrere, da der MySQL-Server automatisch Datenbanken erzeugt, um Zugriff auf verschiedene Metadaten und Servereinstellungen zu bieten.

Verbindung zu einer bestehenden Datenbank

Nehmen wir an, du hast bereits eine Datenbank erstellt, dich aber noch nicht mit dem Server verbunden; wie würdest du dich direkt mit der Datenbank verbinden? 

Ganz einfach. 

Übergebe den Namen der Datenbank als Argument an die Methode connect():

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD,
        database = "book_ratings"
    ) as database:
       
        print(database})

except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x0000016DD8C24970>
"""

Tabellen erstellen

Informationen in einer Datenbank werden in Tabellen gespeichert. Eine Tabelle ist ein Format zur Speicherung zusammenhängender Daten in Spalten und Zeilen. 

In einer Datenbank kann es mehrere Tabellen geben, auch wenn sie nicht miteinander verknüpft sind. Du kannst aber auch eine relationale Datenbank mit nur einer Tabelle haben, wie wir in diesem Abschnitt zeigen – vertiefe dein Wissen zu relationalen Datenbanken im Kurs Introduction to Relational Databases in SQL

Das Erstellen einer Tabelle folgt demselben Muster, das du bereits gesehen hast: 

  • Schreibe einen SQL-Befehl als String. 
  • Übergebe ihn an die Methode execute() des Cursor-Objekts. 

Die SQL-Anweisung in diesem Fall ist CREATE TABLE.

Erstellen wir eine Tabelle für Bücher:

create_books_table = """
CREATE TABLE books(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100),
    author VARCHAR(100),
    genre VARCHAR(100),
    release_year YEAR(4)
)
"""
# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(create_books_table)
    existing_database.commit()

In der letzten Codezeile siehst du die Methode commit() auf unserem Objekt existing_database. Das ist nötig, weil der MySQL-Python-Connector standardmäßig Transaktionen nicht automatisch bestätigt.

Immer wenn du Daten in einer Tabelle änderst, musst du commit() aufrufen – mehr dazu in den MySQL-Docs

Weitere wichtige Punkte im Code: 

  • NOT NULL: Eine Einschränkung, die verhindert, dass eine Spalte NULL-Werte akzeptiert. 
  • PRIMARY KEY: Ein eindeutiger Wert zur Identifizierung bestimmter Zeilen in einer Tabelle. 
  • AUTO_INCREMENT: Generiert automatisch eine eindeutige Zahl für neue Datensätze, die in die Tabelle eingefügt werden. 

Wir können prüfen, ob unser Schema korrekt erstellt wurde, indem wir die Anweisung DESCRIBE verwenden und anschließend alle Elemente mit der Methode fetchall() unseres Cursor-Objekts ausgeben…

describe_books = "DESCRIBE books"
with existing_database.cursor() as cursor:
    cursor.execute(describe_books)
    books_schema = cursor.fetchall()
    for column in books_schema:
        print(column)

"""
('id', b'int', 'NO', 'PRI', None, 'auto_increment')
('title', b'varchar(100)', 'YES', '', None, '')
('author', b'varchar(100)', 'YES', '', None, '')
('genre', b'varchar(100)', 'YES', '', None, '')
('release_year', b'year', 'YES', '', None, '')
"""

Daten einfügen

In den vorherigen Abschnitten haben wir in unserer Datenbank book_ratings eine Tabelle namens books angelegt. Momentan ist sie leer. Im nächsten Abschnitt siehst du zwei Möglichkeiten, wie du eine Tabelle befüllen kannst. 

Einen einzelnen Datensatz einfügen

Mitunter musst du einen einzelnen Datensatz in eine Tabelle einfügen. In der Praxis ist das selten, aber so funktioniert es:

# INSERT SINGLE RECORD
insert_single_record = "INSERT INTO books (id, title, author, genre, release_year)\
    VALUES (%s, %s, %s, %s, %s)"
single_record = (
    "1", "Choose Yourself! Be Happy, Make Millions, Live the Dream", "James Altucher", "self-help", "2013"
    )

# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(insert_single_record, single_record)
    existing_database.commit()

Mehrere Datensätze einfügen

Häufiger fügst du Daten mit der Methode executemany(operation_to_perform, seq_of_params) des Cursor-Objekts ein; damit kannst du mehrere Datensätze auf einmal schreiben. 

Die Struktur der Operation bleibt gleich; nur die Parametersequenz ändert sich. 

So sieht das im Code aus: 

multiple_records = [
    (
        "2",
        "Skip the Line: The 10,000 Experiments Rule and Other Surprising Advice for Reaching Your Goals",
        "James Altucher",
        "self-help",
        "2021"        
    ),
    (
        "3",
        "The Power of No: Because One Little Word Can Bring Health, Abundance, and Happiness",
        "James Altucher",
        "self-help",
        "2014"
    ),
    ]

with existing_database.cursor() as cursor:
    cursor.executemany(insert_multiple_records, multiple_records)
    existing_database.commit()

Daten abfragen 

Die Anweisung SELECT dient dazu, Zeilen aus einer oder mehreren Tabellen einer Datenbank abzurufen. Wir können SELECT auf zwei Arten nutzen: 

  1. Bestimmte Spalten aus einer Tabelle auswählen.
select_specific_cols = "SELECT author, release_year FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_specific_cols)
  1. Alle Spalten mit einem Sternchen „*“ zurückgeben.
# Create cursor object
select_all_cols = "SELECT * FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_all_cols)

Daten sortieren und filtern 

Daten zu sortieren und zu filtern hilft dir, genau die Ergebnisse zurückzugeben, die dich interessieren, indem du Bedingungen vorgibst, die die Datensätze erfüllen müssen. 

Einige Beispiele: 

WHERE

Die Anweisung WHERE filtert Daten anhand einer definierten Bedingung. 

Angenommen, wir möchten Autor und Buchtitel für alle Bücher ausgeben, die bis einschließlich 2010 erschienen sind: 

condition = "SELECT author, title FROM books WHERE release_year <= 2010"
with existing_database.cursor() as cursor:
    cursor.execute(condition)

ORDER BY

Mit ORDER BY lassen sich Ergebnisse aufsteigend (ASC) oder absteigend (DESC) sortieren. Standard ist aufsteigend, sofern nichts anderes angegeben ist. 

So sortieren wir nach Veröffentlichungsjahr in absteigender Reihenfolge:

order_by_year = "SELECT * FROM books ORDER BY release_year DESC"
with existing_database.cursor() as cursor:
    cursor.execute(order_by_year)

LIMIT

Mit der Anweisung LIMIT legst du fest, wie viele Datensätze im Resultset zurückgegeben werden.

# Create cursor object
define_limit = "SELECT * FROM books LIMIT 3"
with existing_database.cursor() as cursor:
    cursor.execute(define_limit)

Der obige Code begrenzt die Anzahl der zurückgegebenen Datensätze auf drei. 

Daten aktualisieren und löschen

Es gibt Zeiten, in denen sich Daten ändern, nicht mehr nützlich sind oder Fehler enthalten. In diesem Abschnitt lernst du, wie du solche Fälle mit Updates und Löschungen handhabst. 

UPDATE

Die Abfrage UPDATE ermöglicht dir, bestehende Werte in einer Tabelle zu ändern, ohne deren Struktur zu beeinflussen. 

Beispielsweise musst du einen Datensatz anpassen, wenn jemand seinen Namen ändert; so sieht das im Code aus:

update_query = """
UPDATE
    books
SET
    author = "Big J"
WHERE
    author = "James Altucher"
"""
with existing_database.cursor() as cursor:
    cursor.execute(update_query)
    existing_database.commit()

DELETE

Mit der Abfrage DELETE löschst du Datensätze aus einer Tabelle:

drop_record = "DELETE FROM books WHERE release_year <= 2000"
with existing_database.cursor() as cursor:
    cursor.execute(drop_record)
    existing_database.commit()

In diesem Code löschen wir alle Datensätze mit einem Veröffentlichungsjahr kleiner oder gleich 2000. 

DROP TABLE

Mit DROP TABLE entfernst du eine Tabelle dauerhaft aus einer Datenbank. Mit IF EXISTS kannst du optional Fälle abfangen, in denen unklar ist, ob die gewünschte Tabelle existiert. 

Lass uns die Tabelle in unserer book_ratings-Datenbank löschen: 

drop_table = "DROP TABLE IF EXISTS books"
with existing_database.cursor() as cursor:
    cursor.execute(drop_table)
    existing_database.commit()

Fazit

In diesem Tutorial hast du gelernt, wie du in Python eine Verbindung zu einem MySQL-Server herstellst, eine neue Datenbank anlegst, dich mit einer bestehenden Datenbank verbindest, eine Tabelle erstellst und verschiedene Abfragen auf eine MySQL-Tabelle aus Python heraus ausführst.  

Sieh dir diese Ressourcen an, um weiterzulernen:

Werde SQL-zertifiziert

Beweise mit einer Zertifizierung, dass deine SQL-Kenntnisse für den Job geeignet sind.
Themen
SQL
Datenwissenschaft
Python

SQL-Kurse

Kurs

Python für Fortgeschrittene

4 Std.
1.4M
Erweitere deine Data-Science-Fähigkeiten und lerne, wie du mit Matplotlib Visualisierungen erstellst und DataFrames mit pandas bearbeitest.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Python-Anweisungen IF, ELIF und ELSE

In diesem Tutorial lernst du ausschließlich Python if else-Anweisungen kennen.
Sejal Jaiswal's photo

Sejal Jaiswal

9 Min.

Tutorial

Python Datenstrukturen Tutorial

Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Sejal Jaiswal's photo

Sejal Jaiswal

24 Min.

Tutorial

if…elif…else in Python Tutorial

Lerne, wie du in Python if…elif…else-Anweisungen erstellst.
DataCamp Team's photo

DataCamp Team

4 Min.

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

5 Min.

Tutorial

Python-Arrays

Python-Arrays mit Code-Beispielen. Lerne noch heute, wie du mit Python NumPy Arrays erstellen und ausdrucken kannst!
DataCamp Team's photo

DataCamp Team

3 Min.

Tutorial

Python-Schleifen-Tutorial

Ein umfassendes Einführungs-Tutorial zu Python-Schleifen. Lerne und übe while- und for-Schleifen, verschachtelte Schleifen, die Schlüsselwörter break und continue, die Range-Funktion und vieles mehr!
Satyabrata Pal's photo

Satyabrata Pal

15 Min.

Mehr AnzeigenMehr Anzeigen