Stai facendo cose pericolose qui:
Nessuna formattazione di stringhe (SQL injection)
Non dovresti usare la formattazione delle stringhe a causa di SQL injection. È anche più complicato quando hai un codice SQL più grande. Usa una dichiarazione preparata come:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Non creare sempre nuovi DB/tabelle
Il tuo codice è destinato a fallire ogni volta perché non può creare un nuovo db con lo stesso nome se esiste già. Lo stesso con la tavola. Suggerirei di creare uno script di installazione. Inoltre puoi inserire il database nel connettore e non devi usare mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
impegnati
Il connettore mysql non esegue il commit automatico per impostazione predefinita, vedere:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Quindi devi farlo da solo dopo l'esecuzione.
mydb.commit()
Il codice alla fine dovrebbe assomigliare a questo:
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!")