Estás haciendo cosas peligrosas aquí:
Sin formato de cadena (inyección SQL)
No debe usar el formato de cadena debido a la inyección de SQL. También es más complicado cuando tienes un código SQL más grande. Use declaraciones preparadas como:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
No cree bases de datos/tablas nuevas todo el tiempo
Su código está destinado a fallar cada vez porque no puede crear una nueva base de datos con el mismo nombre si ya existe. Lo mismo con la mesa. Sugeriría crear un script de configuración. También puede poner la base de datos en el conector y no tiene que usar mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
comprometerse
El conector mysql no se confirma automáticamente de forma predeterminada, consulte:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Así que tienes que hacerlo tú mismo después de la ejecución.
mydb.commit()
El código debería verse así al final:
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!")