Просто превърнах предишния си коментар в отговор, тъй като изглеждаше правилното решение :-)
Проблемът идва от друга линия. Имате това:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email))
Това не прави това, което може би си мислите, че прави. Поставяне на email
в скоби не прави нищо, така че редът всъщност е еквивалентен на предаване на всеки знак от каквото и да е в тази променлива в списък със знаци. Ако вместо това направите това:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email,))
...тогава ще предавате кортеж, съдържащ един елемент, email
, и би трябвало да работи по-добре.