Abbiamo trovato un attributo sull'oggetto cursore chiamato cursor._last_executed
che contiene l'ultima stringa di query da eseguire anche quando si verifica un'eccezione. Questo è stato più facile e migliore per noi in produzione rispetto all'utilizzo continuo della profilazione o della registrazione delle query MySQL poiché entrambi hanno un impatto sulle prestazioni e coinvolgono più codice o più file di registro separati correlati, ecc.
Mi dispiace rispondere alla mia stessa domanda, ma per noi funziona meglio.