Me gustaría detectar y registrar advertencias de MySQL en Python. Por ejemplo, MySQL emite una advertencia al error estándar si envía 'DROP DATABASE IF EXISTS database_of_armaments'
cuando no existe dicha base de datos. Me gustaría capturar esto y registrarlo, pero incluso en la sintaxis try/else el mensaje de advertencia aún aparece.Reventado de advertencias de MySQL en Python
La sintaxis try/except capta los errores de MySQL (por ejemplo, el envío de un error tipográfico como 'DRP DATABASE database_of_armaments'
).
He experimentado con <<except.MySQLdb.Warning>>
- sin suerte. Miré el módulo de advertencias, pero no entiendo cómo incorporarlo en la sintaxis try/else.
Para ser concreto, ¿cómo consigo lo siguiente (o algo así) para trabajar.
DADO: la base de datos 'database_of_armaments' no existe.
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?>>
ACTUALIZACIÓN:
Gracias por los comentarios. Había probado esto y no funcionaba, pero había estado usando una clase DatabaseConnection que escribí para una conexión, y su método runQuery() para ejecutar. Cuando creé una conexión y un cursor fuera de la clase, la Excepción try/except captó el "Error de programación", y excepto que MySQLdb.ProgrammingError funcionó según lo anunciado.
Así que ahora tengo que descubrir cuál es el problema con la codificación de mi clase.
Gracias por su ayuda.
no he encontrado ninguna de las las respuestas aquí son útiles, pero fue http://stackoverflow.com/a/2102315/91238. – arantius