i

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:

Programm mit Fehler im SQL-Befehl

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))

Bei der Verwendung von SQLite muss in Zeile [13] der richtige Bibliotheksname stehen, also
except sqlite3.Error as 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.

Mittels except-Block abgefangener SQL-Fehler

Suche

v
3.4.3.4
dev.inf-schule.de/datenbanksysteme/zugriff/pythonzugriff/exkurs_fehler
dev.inf-schule.de/3.4.3.4
dev.inf-schule.de/@/page/GH01uG7gI2PFmc0S

Rückmeldung geben