Exkurs - Fehlerbehandlung
Wenn man programmiert, funktioniert nicht immer alles sofort; das hast du sicher auch schon festgestellt.
Der folgende Programmausschnitt enthält einen kleinen Fehler, der vielleicht auch nicht direkt offensichtlich ist:
cursor = con.cursor()
SQLBefehl = 'SELECT Name, Einohner FROM kontinent'
cursor.execute(SQLBefehl)
row=cursor.fetchone()
while (row!=None):
print(row[0], row[1])
row = cursor.fetchone ()
Die Ausführung des Programms führt zu einer Fehlermeldung:

Die rote Schrift zeigt schon an, dass das Programm direkt abgebrochen ist und in der letzten Zeile lässt sich auch der Grund ablesen: Beim Attribut "Einwohner" wurde im SQL-Befehl ein Buchstabe vergessen.
SQL-Fehler abfangen
Der MySQL-Connector verwendet die Ausnahmebehandlung (Exceptions) von Python, um Fehler an das aufrufende Programm zu melden. Dieses kann dann diese Fehler abfangen und behandeln. Ein einfaches Beispiel siehst du hier:
cursor = con.cursor()
SQLBefehl = 'SELECT Name, Einohner FROM kontinent'
try:
cursor.execute(SQLBefehl)
# Abrufen der Ergebnisse
[...]
except mysql.connector.Error as err:
print("Fehler bei der SQL-Ausführung: %s" % (err))
Die Ausführung des SQL-Befehls wird in einen eigenen try
/except
-Block gesetzt.
Bei einem Fehler innerhalb des try
-Blocks wird in den "passenden" except
-Block
gesprungen. Mit dem Befehl except mysql.connector.Error as err
wird ganz konkret auf
Fehler des MySQL-Connnectors eingegangen. Die konkrete Fehlermeldung ist im Objekt err
ablesbar und wird hier direkt dem Benutzer über ein print
angezeigt. Das Programm läuft danach
bis zum Ende weiter.
