ここで危険なことをしています:
文字列フォーマットなし(SQLインジェクション)
SQLインジェクションのため、文字列フォーマットは使用しないでください。また、SQLコードが大きい場合は、さらに複雑になります。次のようなプリペアドステートメントを使用します:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)
常に新しいDB/テーブルを作成しないでください
コードがすでに存在する場合、同じ名前の新しいデータベースを作成できないため、コードは毎回失敗する運命にあります。テーブルも同じです。セットアップスクリプトを作成することをお勧めします。また、データベースをコネクタに配置でき、mycursor.execute("USE login;")
を使用する必要はありません。
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database='login'
)
コミット
mysqlコネクタはデフォルトでは自動コミットしません。
したがって、実行後に自分で行う必要があります。
mydb.commit()
コードは最終的に次のようになります。
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!")