Allt som krävdes var för buffered
ställas in på sant!
cursor = cnx.cursor(buffered=True)
Anledningen är att utan en buffrad markör laddas resultaten "lata", vilket betyder att "fetchone" faktiskt bara hämtar en rad från hela resultatuppsättningen av frågan. När du kommer att använda samma markör igen, kommer den att klaga på att du fortfarande har n-1 resultat (där n är resultatuppsättningen) som väntar på att hämtas. Men när du använder en buffrad markör hämtar kontakten ALLA rader bakom kulisserna och du tar bara en från kontakten så att mysql db inte klagar.