Je doet hier gevaarlijke dingen:
Geen tekenreeksopmaak (SQL-injectie)
U moet geen String-opmaak gebruiken vanwege SQL-injectie. Het is ook ingewikkelder als je grotere SQL-code hebt. Gebruik voorbereide verklaring zoals:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Maak DB/Tabel niet altijd nieuw
Uw code is voorbestemd om elke keer te mislukken omdat het geen nieuwe db met dezelfde naam kan maken als deze al bestaat. Hetzelfde met tafel. Ik stel voor om een setup-script te maken. Ook kunt u de database in de connector plaatsen en hoeft u mycursor.execute("USE login;")
niet te gebruiken
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
vastleggen
mysql-connector wordt standaard niet automatisch vastgelegd, zie:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Je moet het dus zelf doen na de uitvoering.
mydb.commit()
De code zou er uiteindelijk zo uit moeten zien:
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!")