W3docs

MySQL Einstieg

Lerne, wie du Python mit MySQL verbindest. Behandelt Installation, Verbindungsaufbau, Datenbankerstellung und erste Abfragen.

Python kann über den offiziellen MySQL Connector/Python-Treiber mit MySQL-Datenbanken kommunizieren. Dieses Kapitel zeigt dir, wie du den Treiber installierst, eine Verbindung herstellst, eine Datenbank erstellst und deine ersten Abfragen ausführst — eine solide Grundlage, bevor du zu Tabellen erstellen, Zeilen einfügen und Daten abfragen übergehst.

Was du brauchst

Bevor du Code schreibst, müssen zwei Dinge bereitstehen:

  • Python 3.7 oder höher auf deinem Rechner installiert.
  • Ein laufender MySQL-Server — entweder eine lokale Installation (MySQL Community Server) oder eine Cloud-Instanz (PlanetScale, Amazon RDS usw.).

Du musst keine Datenbank im Voraus erstellen; du wirst in einem späteren Abschnitt eine aus Python heraus erstellen.

MySQL Connector/Python installieren

MySQL Connector/Python ist der offizielle MySQL-Treiber, der von Oracle gepflegt wird. Installiere ihn mit pip:

pip install mysql-connector-python

Überprüfe die Installation:

import mysql.connector
print(mysql.connector.__version__)
# Example output: 8.4.0

Wenn du eine Versionsnummer siehst, ist der Treiber einsatzbereit.

Warum mysql-connector-python und nicht PyMySQL?

Beide Treiber funktionieren, aber mysql-connector-python ist der offiziell von Oracle unterstützte Treiber. Er verwendet standardmäßig eine reine Python-Implementierung und optional eine C-Erweiterung für bessere Leistung. PyMySQL ist eine beliebte Community-Alternative mit nahezu identischer API. Die Kapitel in diesem Abschnitt verwenden mysql-connector-python.

Verbindung zu einem MySQL-Server herstellen

Verwende mysql.connector.connect(), um eine Verbindung zu öffnen. Übergib deine Anmeldedaten als Schlüsselwortargumente:

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword"
)

if connection.is_connected():
    print("Connected to MySQL Server")

connection.close()

Ersetze yourusername und yourpassword durch deine tatsächlichen Anmeldedaten. Der Wert für host ist "localhost", wenn MySQL auf demselben Rechner läuft; verwende eine IP-Adresse oder einen Hostnamen für einen Remote-Server.

Anmeldedaten aus dem Quellcode fernhalten

Das Hardcodieren von Passwörtern in Skripten ist ein Sicherheitsrisiko. Speichere sie in Umgebungsvariablen und lies sie zur Laufzeit aus:

import mysql.connector
import os

connection = mysql.connector.connect(
    host=os.environ.get("MYSQL_HOST", "localhost"),
    user=os.environ.get("MYSQL_USER"),
    password=os.environ.get("MYSQL_PASSWORD")
)

print("Connected:", connection.is_connected())
connection.close()

Setze die Variablen in deiner Shell, bevor du das Skript ausführst:

export MYSQL_USER=yourusername
export MYSQL_PASSWORD=yourpassword
python connect.py

Eine Datenbank erstellen

Sobald du mit dem Server verbunden bist (ohne eine Datenbank anzugeben), kannst du mit einer CREATE DATABASE-Anweisung eine erstellen. Führe sie über einen Cursor aus — ein Objekt, das SQL-Befehle sendet und Ergebnisse abruft.

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword"
)

cursor = connection.cursor()
cursor.execute("CREATE DATABASE IF NOT EXISTS mydatabase")
print("Database created")

cursor.close()
connection.close()

Die Klausel IF NOT EXISTS verhindert einen Fehler, wenn die Datenbank bereits vorhanden ist.

Datenbanken auflisten

Du kannst überprüfen, ob die Datenbank erstellt wurde, indem du alle Datenbanken auf dem Server auflistest:

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword"
)

cursor = connection.cursor()
cursor.execute("SHOW DATABASES")

for db in cursor:
    print(db)

cursor.close()
connection.close()

Jede Zeile wird als Tupel zurückgegeben, sodass du eine Ausgabe wie diese siehst:

('information_schema',)
('mydatabase',)
('mysql',)
('performance_schema',)
('sys',)

Verbindung zu einer bestimmten Datenbank herstellen

Sobald die Datenbank existiert, füge beim Verbinden den Parameter database hinzu, damit alle nachfolgenden Abfragen gegen diese Datenbank ausgeführt werden:

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="mydatabase"
)

print("Database in use:", connection.database)
connection.close()

Einen Kontextmanager verwenden (empfohlenes Muster)

Das manuelle Aufrufen von .close() bei jeder Verbindung und jedem Cursor ist fehleranfällig — wenn vor .close() eine Ausnahme auftritt, bleibt die Verbindung offen. Verwende einen try/finally-Block oder, noch besser, umschließe den Cursor mit einer with-Anweisung:

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="mydatabase"
)

try:
    with connection.cursor() as cursor:
        cursor.execute("SELECT DATABASE()")
        row = cursor.fetchone()
        print("Current database:", row[0])
finally:
    connection.close()

Der with-Block schließt den Cursor automatisch, wenn der Block endet, auch wenn eine Ausnahme ausgelöst wird.

Verbindungsfehler behandeln

Netzwerkprobleme oder falsche Anmeldedaten lösen mysql.connector.Error aus. Behandle diese Ausnahme immer im Produktionscode:

import mysql.connector
from mysql.connector import Error

try:
    connection = mysql.connector.connect(
        host="localhost",
        user="yourusername",
        password="yourpassword",
        database="mydatabase"
    )
    print("Connection successful")
except Error as e:
    print(f"Error connecting to MySQL: {e}")
finally:
    if "connection" in dir() and connection.is_connected():
        connection.close()
        print("Connection closed")

Häufige Fehler, auf die du stoßen kannst:

FehlercodeBedeutung
1045Zugriff verweigert — falscher Benutzername oder falsches Passwort
2003Verbindung zum Host nicht möglich — Server läuft nicht oder falscher Host/Port
1049Unbekannte Datenbank — der angegebene database-Name existiert nicht

Kurzreferenz: Verbindungsparameter

ParameterTypBeschreibung
hoststrHostname oder IP des MySQL-Servers (Standard "127.0.0.1")
portintMySQL-Port (Standard 3306)
userstrMySQL-Benutzername
passwordstrMySQL-Passwort
databasestrBeim Verbinden auszuwählende Datenbank
charsetstrZeichensatz (Standard "utf8mb4")
connect_timeoutintSekunden bis zum Verbindungstimeout (Standard 10)
use_pureboolTrue = reines Python; False = C-Erweiterung falls verfügbar

Was als Nächstes kommt

Mit einer funktionierenden Verbindung kannst du darauf aufbauen:

Was this page helpful?