Vorrei rilevare e registrare gli avvisi MySQL in Python. Ad esempio, MySQL emette un avviso di errore standard se si invia 'DROP DATABASE IF EXISTS database_of_armaments'
quando non esiste un tale database. Mi piacerebbe prendere questo e loggarlo, ma anche nella sintassi try/else il messaggio di avviso appare ancora.Intrappolamento di avvertimenti MySQL in Python
La sintassi try/except rileva gli errori MySQL (ad esempio, l'invio di un errore simile a 'DRP DATABASE database_of_armaments'
).
Ho sperimentato con <<except.MySQLdb.Warning>>
- senza fortuna. Ho esaminato il modulo degli avvisi, ma non capisco come incorporarlo nella sintassi try/else.
Per essere concreti, come faccio a ottenere il seguente (o qualcosa del genere) per funzionare.
GIVEN: il database 'database_of_armaments' non esiste.
try:
cursor.execute('DROP DATABASE IF EXISTS database_of_armaments')
except: <<WHAT DO I PUT HERE?>>
print 'There was a MySQL warning.'
<<AND what goes here if I want to get and manipulate information about the warning?>>
UPDATE:
Grazie per i commenti. Avevo provato questi e non hanno funzionato - ma stavo usando una classe DatabaseConnection che ho scritto per una connessione, e il suo metodo runQuery() da eseguire. Quando ho creato una connessione e un cursore all'esterno della classe, try/except Exception ha rilevato "Errore di programmazione" e salvo MySQLdb.ProgrammingError ha funzionato come pubblicizzato.
Quindi ora devo capire cosa c'è di sbagliato nella codifica della mia classe.
Grazie per il vostro aiuto.
non ho trovato nessuna delle le risposte qui sono utili, ma http://stackoverflow.com/a/2102315/91238 era. – arantius