Je viens de convertir mon commentaire précédent en réponse, car cela semblait être la bonne solution :-)
Le problème vient d'une autre ligne. Vous avez ceci :
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email))
Cela ne fait pas ce que vous pourriez penser qu'il fait. Mettre email
entre parenthèses ne fait rien, donc la ligne équivaut en fait à passer chaque caractère de ce qui se trouve dans cette variable dans une liste de caractères. Si à la place vous faites ceci :
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email,))
... alors vous passerez un tuple contenant un élément, email
, et cela devrait mieux fonctionner.