如果记录已经存在,我需要更新一行,如果没有,则需要创建一个新行。我支持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
答案 0 :(得分:15)
缺少括号。您还可以使用语句的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()