正しい解決策のようだったので、以前のコメントを回答に変換するだけです:-)
問題は別のラインから来ています。あなたはこれを持っています:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email))
これはあなたが思っていることをしません。 email
を置く 角かっこは何もしないので、この行は実際には、文字のリスト内のその変数にあるものの各文字を渡すのと同じです。代わりにこれを行う場合:
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email,))
...次に、email
という1つのアイテムを含むタプルを渡します。 、そしてそれはより良く機能するはずです。