Тук правите опасни неща:
Без форматиране на низ (SQL инжекция)
Не трябва да използвате форматиране на низ поради SQL инжекция. Освен това е по-сложно, когато имате по-голям SQL код. Използвайте подготвено изявление като:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Не създавайте DB/Table нови през цялото време
Вашият код е предназначен да се проваля всеки път, защото не може да създаде нов db със същото име, ако вече съществува. Същото и с масата. Бих предложил да създадете скрипт за настройка. Също така можете да поставите базата данни в конектора и не е нужно да използвате mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
ангажимент
mysql конекторът не се извършва автоматично по подразбиране, вижте:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Така че трябва да го направите сами след изпълнението.
mydb.commit()
В крайна сметка кодът трябва да изглежда така:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
mycursor = mydb.cursor()
# sign up
email = input("Your email: ")
passw = input("Your password: ")
confirm_pass = input("Confirm password: ")
if passw == confirm_pass:
print("Successfuly registered!")
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
mydb.commit()
else:
print("wrong password!")