Du laver nogle farlige ting her:
Ingen strengformatering (SQL-injektion)
Du bør ikke bruge String-formatering på grund af SQL Injection. Det er også mere kompliceret, når du har større SQL-kode. Brug forberedt erklæring som:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Opret ikke DB/tabel ny hele tiden
Din kode er bestemt til at fejle hver gang, fordi den ikke kan oprette en ny db med samme navn, hvis den allerede eksisterer. Det samme med bord. Jeg vil foreslå at oprette et opsætningsscript. Du kan også lægge databasen i stikket og behøver ikke at bruge mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
forpligte
mysql-forbindelsen autocommiterer ikke som standard se:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Så du skal selv gøre det efter udførelsen.
mydb.commit()
Koden skulle se sådan ud til sidst:
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!")