Todo lo que se requería era buffered
para establecerse en verdadero!
cursor = cnx.cursor(buffered=True)
La razón es que sin un cursor almacenado en búfer, los resultados se cargan "perezosamente", lo que significa que "buscar" en realidad solo obtiene una fila del conjunto completo de resultados de la consulta. Cuando vuelva a usar el mismo cursor, se quejará de que todavía tiene n-1 resultados (donde n es la cantidad del conjunto de resultados) esperando a ser recuperados. Sin embargo, cuando usa un cursor almacenado en búfer, el conector obtiene TODAS las filas detrás de escena y simplemente toma una del conector para que mysql db no se queje.