Grazie a JoshuaBoshi per la sua risposta, che ha risolto il problema. Dopo aver chiamato la procedura, ho dovuto chiudere il cursore e riaprirlo prima di utilizzarlo per eseguire un'altra istruzione:
cursor.close()
cursor = connection.cursor()
Il cursore può essere chiuso immediatamente dopo fetchall()
. Il set di risultati rimane e può essere riprodotto in loop.