重复键上插入/更新的MySQL错误

时间:2016-12-12 21:41:19

标签: python mysql

以下陈述怎么了?

我正在尝试将数据插入到我的表中但是如果有重复的条目则更新它 - 当我运行它时,我收到以下错误:

  

(1064,“您的SQL语法有错误;请查看手册   对应于您的MySQL服务器版本,以便使用正确的语法   'updat e temp set impressions = impressions + 1,clicks = clicks附近   + 0,ctr =(第1行的ctr +')

def insert_or_update_new(self, profile_id, landing_page, keyword, position, impressions, clicks, ctr):
    try:
        self.cursor.execute('''insert into temp (profile_id, landing_page, keyword, position, impressions, clicks, ctr) values (%s, %s, %s, %s, %s, %s, %s) on duplicate key update temp set impressions = impressions + %s, clicks = clicks + %s, ctr = (ctr + %s / 2)''', (profile_id, landing_page, keyword, position, impressions, clicks, ctr, impressions, clicks, ctr))
        self.db.commit()
    except Exception as e:
        self.db.rollback()
        # Rollback in case there is any error
        return e

更新:删除了重复的更新 - 仍然存在错误。

2 个答案:

答案 0 :(得分:1)

您的陈述应该与

不同
on duplicate key update update temp set impressions...

但是

on duplicate key update impressions=...

答案 1 :(得分:0)

您的陈述中包含 update 这两个字,删除一个可能会解决问题: - )