我编写了一个函数来获取列表列表并插入到我的数据库表中,但是,如果存在重复键,则其中一列将更新。我做错了什么?
def insert_or_update(self, data):
try:
self.cursor.executemany('''insert into landing_pages (profile_id, landing_page, keyword_count, unique_key)
values (%s, %s, %s, %s) on duplicate key update keyword_count =values(keyword_count)''', (data))
self.db.commit()
return self.cursor.lastrowid
except Exception as e:
self.db.rollback()
# Rollback in case there is any error
return e
finally:
self.db.close()
更新: 对不起,忘了提一下实际问题(一整天都在工作)。它似乎没有更新,相反,它只是再次插入数据。
对于唯一键,我实际创建了一个盐渍哈希,这来自profile_id和landing_page列;哈希传递给unique_key列。
我的表格如下:
+---------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+---------+----------------+
| id | mediumint(9) | NO | PRI | NULL | auto_increment |
| profile_id | int(11) | YES | | NULL | |
| landing_page | varchar(2083) | YES | | NULL | |
| keyword_count | int(11) | YES | | NULL | |
| unique_key | varchar(200) | YES | UNI | NULL | |
+---------------+---------------+------+-----+---------+----------------+
答案 0 :(得分:0)
假设keyword_count
是int
,您可以在查询中更改以下内容:
update keyword_count =values(keyword_count)
到
update keyword_count = <value>
答案 1 :(得分:0)
我认为你表中的问题是自我解释的
您的密钥是 id
您要插入的值是 profile_id,landing_page,keyword_count,unique_key
没有一个与您的密钥发生冲突
在更新时有唯一键: