Jeg konverterede bare min tidligere kommentar til et svar, da det så ud til at være den rigtige løsning :-)
Problemet kommer fra en anden linje. Du har denne:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email))
Dette gør ikke, hvad du måske tror, det gør. Indsætter email
i parentes gør intet, så linjen svarer faktisk til at indsætte hvert tegn af hvad der er i den variabel i en liste over tegn. Hvis du i stedet gør dette:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email,))
...så sender du en tuple, der indeholder ét element, email
, og det burde fungere bedre.