sql >> データベース >  >> RDS >> Mysql

私のプログラムは、Pythonのmysqlコネクタlibを使用してMySQLに値を保存できません

    ここで危険なことをしています:

    文字列フォーマットなし(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コネクタはデフォルトでは自動コミットしません。 https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

    したがって、実行後に自分で行う必要があります。

    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!")
    



    1. NetBeansからリモートでjarをデバッグする方法

    2. グローバルinnodb_buffer_pool_sizeを設定する方法は?

    3. mysqlワークベンチからデータベースをエクスポートできません

    4. 2つのmySQLデータベースを1つにマージする方法は?