Tabelle in MySQL mit Python erstellen
Lerne, wie du MySQL-Tabellen in Python mit mysql-connector-python erstellst. Behandelt CREATE TABLE, Datentypen, Constraints und SHOW TABLES.
Das Erstellen einer Tabelle ist der erste Schritt zum Speichern strukturierter Daten in MySQL. Dieses Kapitel zeigt, wie du eine MySQL-Tabelle aus Python heraus mit mysql-connector-python definierst und erstellst. Es werden Spalten-Datentypen, häufige Constraints, der IF NOT EXISTS-Schutz, das Auflisten vorhandener Tabellen und eine saubere Fehlerbehandlung behandelt.
Voraussetzungen
Bevor du eines der folgenden Beispiele ausführst, stelle sicher, dass du Folgendes hast:
- Python 3.x installiert
- Einen laufenden MySQL-Server
mysql-connector-pythoninstalliert:
pip install mysql-connector-python- Eine Datenbank, mit der du arbeiten kannst (siehe MySQL Datenbank erstellen, wenn du eine erstellen musst)
Verbindung zu MySQL herstellen
Jede Operation beginnt mit einer Verbindung. Übergib deine Anmeldedaten und den Zieldatenbanknamen an mysql.connector.connect():
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()Das cursor()-Objekt wird verwendet, um SQL-Anweisungen an den Server zu senden.
Eine Tabelle erstellen
Verwende die SQL-Anweisung CREATE TABLE innerhalb von cursor.execute(), um eine neue Tabelle zu definieren. Das folgende Beispiel erstellt eine customers-Tabelle mit vier Spalten:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Table created successfully.")
mycursor.close()
mydb.close()Verwendete Spaltentypen und Constraints
| Spalte | Typ | Hinweise |
|---|---|---|
id | INT | AUTO_INCREMENT generiert eine eindeutige ID für jede Zeile; PRIMARY KEY erzwingt Eindeutigkeit und beschleunigt Abfragen |
name | VARCHAR(255) | Zeichenkette variabler Länge bis zu 255 Zeichen; NOT NULL bedeutet, dass jede Zeile einen Wert liefern muss |
address | VARCHAR(255) | Optional — kein NOT NULL, akzeptiert daher NULL |
age | INT | Speichert ganze Zahlen |
IF NOT EXISTS verwenden
Das Ausführen von CREATE TABLE auf einer bereits vorhandenen Tabelle löst einen Fehler aus. Füge IF NOT EXISTS hinzu, damit die Anweisung keine Wirkung hat, wenn die Tabelle bereits vorhanden ist:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Done — table created or already exists.")
mycursor.close()
mydb.close()Dieses Muster kann bei jedem Anwendungsstart sicher aufgerufen werden, ohne Fehler durch doppelte Tabellen zu verursachen.
Tabellen zur Überprüfung der Erstellung auflisten
Nach dem Erstellen einer Tabelle kannst du mit SHOW TABLES bestätigen, dass sie vorhanden ist:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SHOW TABLES")
tables = [row[0] for row in mycursor.fetchall()]
print("Tables in database:", tables)
if "customers" in tables:
print("customers table is ready.")
else:
print("customers table was not found.")
mycursor.close()
mydb.close()Beispielausgabe:
Tables in database: ['customers']
customers table is ready.Fehlerbehandlung
Wenn du den Code zur Tabellenerstellung in einen try/except-Block einwickelst, kannst du Probleme abfangen — wie eine unterbrochene Verbindung oder einen Syntaxfehler in deinem SQL — ohne dass das Programm abstürzt:
import mysql.connector
from mysql.connector import Error
try:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Table created successfully.")
except Error as e:
print(f"Error: {e}")
finally:
if mydb.is_connected():
mycursor.close()
mydb.close()
print("Connection closed.")Der finally-Block stellt sicher, dass die Verbindung immer geschlossen wird, auch wenn eine Ausnahme auftritt.
Häufige Spalten-Datentypen
MySQL unterstützt viele Datentypen. Dies sind die, die du in Python-Anwendungen am häufigsten verwenden wirst:
| Datentyp | Anwendungsfall |
|---|---|
INT | Ganze Zahlen (IDs, Zählungen, Alter) |
FLOAT, DOUBLE | Dezimalzahlen (Preise, Messwerte) |
VARCHAR(n) | Text variabler Länge bis zu n Zeichen |
TEXT | Lange Zeichenketten ohne feste Maximallänge |
DATE | Kalenderdaten (YYYY-MM-DD) |
DATETIME | Datum und Uhrzeit kombiniert (YYYY-MM-DD HH:MM:SS) |
BOOLEAN | TRUE / FALSE (gespeichert als TINYINT(1)) |
Ein vollständigeres Beispiel
Hier ist eine realistischere Tabelle, die mehrere Datentypen und Constraints kombiniert:
import mysql.connector
from mysql.connector import Error
try:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
product VARCHAR(255) NOT NULL,
quantity INT NOT NULL DEFAULT 1,
price FLOAT NOT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP
)
"""
mycursor.execute(sql)
print("orders table created (or already exists).")
except Error as e:
print(f"Error: {e}")
finally:
if mydb.is_connected():
mycursor.close()
mydb.close()DEFAULT 1 bedeutet, dass quantity auf 1 gesetzt wird, wenn kein Wert angegeben wird. DEFAULT CURRENT_TIMESTAMP zeichnet automatisch auf, wann jede Bestellzeile eingefügt wurde.
Fazit
So erstellst du eine Tabelle in MySQL aus Python heraus:
- Installiere
mysql-connector-pythonund stelle eine Verbindung zu deiner Datenbank her. - Schreibe eine
CREATE TABLE-Anweisung, die den Namen, den Datentyp und etwaige Constraints jeder Spalte definiert. - Verwende
IF NOT EXISTS, um Fehler bei wiederholten Ausführungen zu vermeiden. - Rufe
SHOW TABLESauf (oder frageinformation_schema.tablesab), um zu bestätigen, dass die Tabelle erstellt wurde. - Schließe immer den Cursor und die Verbindung — idealerweise in einem
finally-Block.
Sobald deine Tabelle existiert, kannst du damit beginnen, Zeilen einzufügen (siehe MySQL Insert) und sie wieder abzufragen (siehe MySQL Select).