Simplemente convirtiendo mi comentario anterior en una respuesta, ya que parecía ser la solución correcta :-)
El problema viene de otra línea. Tienes esto:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email))
Esto no hace lo que crees que hace. Poner email
entre paréntesis no hace nada, por lo que la línea es en realidad equivalente a pasar cada carácter de lo que sea que esté en esa variable en una lista de caracteres. Si en cambio haces esto:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email,))
... entonces pasará una tupla que contiene un elemento, email
, y debería funcionar mejor.