Robisz tutaj niebezpieczne rzeczy:
Brak formatowania ciągów (wstrzyknięcie SQL)
Nie należy używać formatowania ciągów ze względu na wstrzyknięcie SQL. Jest to również bardziej skomplikowane, gdy masz większy kod SQL. Użyj przygotowanego Oświadczenia, takiego jak:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Nie twórz cały czas bazy danych/tabeli
Twój kod jest skazany na niepowodzenie za każdym razem, ponieważ nie może utworzyć nowej bazy danych o tej samej nazwie, jeśli już istnieje. To samo ze stołem. Proponuję stworzyć skrypt instalacyjny. Możesz także umieścić bazę danych w konektorze i nie musisz używać mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
zatwierdź
mysql łącznik domyślnie nie jest automatycznie zatwierdzany, zobacz:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Musisz więc zrobić to sam po egzekucji.
mydb.commit()
Na końcu kod powinien wyglądać tak:
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!")