Vous faites des choses dangereuses ici :
Pas de formatage de chaîne (injection SQL)
Vous ne devriez pas utiliser le formatage de chaîne à cause de l'injection SQL. C'est également plus compliqué lorsque vous avez un code SQL plus volumineux. Utilisez une déclaration préparée comme :
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Ne créez pas DB/Table new tout le temps
Votre code est voué à échouer à chaque fois car il ne peut pas créer une nouvelle base de données avec le même nom si elle existe déjà. Idem avec tableau. Je suggérerais de créer un script d'installation. Vous pouvez également mettre la base de données dans le connecteur et ne pas avoir à utiliser mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
s'engager
Le connecteur mysql ne s'engage pas automatiquement par défaut voir :https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Vous devez donc le faire vous-même après l'exécution.
mydb.commit()
Le code devrait ressembler à ceci à la fin :
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!")