Encontramos un atributo en el objeto del cursor llamado cursor._last_executed
que contiene la última cadena de consulta para ejecutar incluso cuando se produce una excepción. Esto fue más fácil y mejor para nosotros en producción que usar la creación de perfiles todo el tiempo o el registro de consultas de MySQL, ya que ambos tienen un impacto en el rendimiento e involucran más código o más archivos de registro separados correlacionados, etc.
Odio responder a mi propia pregunta, pero esto funciona mejor para nosotros.