MySQL Python 更新或插入

9 投票
2 回答
23212 浏览
提问于 2025-04-17 19:25

我需要更新一行数据,如果记录已经存在的话;如果不存在,就创建一个新的。我知道使用MYSQLdb中的ON DUPLICATE KEY可以做到这一点,但我在实现上遇到了一些问题。我的代码如下:

        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

2 个回答

-2
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
23

缺少了一个括号。你还可以在语句的 ON DUPLICATE KEY UPDATE 部分使用 VALUES(column)

    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()

撰写回答