Du machst hier gefährliche Dinge:
Keine Zeichenfolgenformatierung (SQL-Injection)
Wegen der SQL-Injection sollten Sie keine String-Formatierung verwenden. Es ist auch komplizierter, wenn Sie größeren SQL-Code haben. Verwenden Sie eine vorbereitete Anweisung wie:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
DB/Tabelle nicht ständig neu erstellen
Ihr Code ist dazu bestimmt, jedes Mal fehlzuschlagen, da er keine neue Datenbank mit demselben Namen erstellen kann, wenn sie bereits vorhanden ist. Das gleiche mit Tisch. Ich würde vorschlagen, ein Setup-Skript zu erstellen. Außerdem können Sie die Datenbank in den Connector stellen und müssen nicht mycursor.execute("USE login;")
verwenden
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
verpflichten
Der mysql-Connector führt standardmäßig kein Autocommit durch, siehe:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Sie müssen es also nach der Hinrichtung selbst tun.
mydb.commit()
Der Code sollte am Ende so aussehen:
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!")