9

レコードが既に存在する場合は行を更新するか、存在しない場合は新しい行を作成する必要があります。ON DUPLICATE KEY が MYSQLdb を使用してこれを達成できるかどうかはわかりませんが、機能させるのに問題があります。私のコードは以下です

        cursor = database.cursor()
        cursor.execute("INSERT INTO userfan (user_id, number, round VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE user_id =%s, number=%s, round=%s", (user_id, number, round))
        database.commit()

主キーは user_id

4

2 に答える 2

20

括弧がありませんでした。ステートメントVALUES(column)のセクションで を使用することもできます。ON DUPLICATE KEY UPDATE

    cursor = database.cursor()
    cursor.execute("""
        INSERT INTO userfan 
            (user_id, number, round)
        VALUES 
            (%s, %s, %s) 
        ON DUPLICATE KEY UPDATE 
                                          -- no need to update the PK
            number  = VALUES(number), 
            round   = VALUES(round) ;
                   """, (user_id, number, round)     # python variables
                  )
    database.commit()
于 2013-03-17T20:11:37.580 に答える