Du gör några farliga saker här:
Ingen strängformatering (SQL-injektion)
Du bör inte använda strängformatering på grund av SQL Injection. Det är också mer komplicerat när du har större SQL-kod. Använd förberedda uttalanden som:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Skapa inte en ny DB/tabell hela tiden
Din kod är avsedd att misslyckas varje gång eftersom den inte kan skapa en ny db med samma namn om den redan finns. Samma sak med bord. Jag skulle föreslå att du skapar ett installationsskript. Du kan också lägga databasen i kopplingen och behöver inte använda mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
begå
mysql-anslutaren autocommit inte som standard se:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Så du måste göra det själv efter utförandet.
mydb.commit()
Koden ska se ut så här till slut:
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!")