Bạn đang làm một số việc nguy hiểm ở đây:
Không có định dạng chuỗi (SQL Injection)
Bạn không nên sử dụng định dạng chuỗi vì SQL Injection. Nó cũng phức tạp hơn khi bạn có mã SQL lớn hơn. Sử dụng Tuyên bố đã chuẩn bị sẵn như:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
Không tạo DB / Bảng mới mọi lúc
Mã của bạn luôn bị lỗi vì nó không thể tạo một db mới có cùng tên nếu nó đã tồn tại. Với bảng cũng vậy. Tôi sẽ đề nghị tạo một kịch bản thiết lập. Ngoài ra, bạn có thể đặt cơ sở dữ liệu trong trình kết nối và không phải sử dụng mycursor.execute("USE login;")
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
cam kết
Trình kết nối mysql không tự động gửi theo mặc định, hãy xem: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
Vì vậy, bạn phải tự làm sau khi thực hiện.
mydb.commit()
Cuối cùng thì mã sẽ trông như thế này:
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!")