我有一个大约有700条记录的表;我正在尝试创建一个Python脚本,它应该更新这个表,所以每个记录都必须用一个新值更新。如果Python脚本找到以前不在表中的新记录,它应该将其添加到我的表中(upstart(。
以下是我尝试过的:
for x in mydatadict:
y = x.replace("/", "-")
z = x.replace("/", "")
sql = "INSERT INTO my_table (first, second, third) VALUES(%s, %s, %s) ON DUPLICATE KEY UPDATE first=%s"
val = (y, z, x, y)
cursor.execute(sql, val)
db.commit()
我的实际代码的问题是它不会更新记录,只会插入它们。所以,如果我有700条记录,运行这个脚本后,我将有1400条记录。我做错了什么?
如果first
列确实是主键,并且您实际上想要忽略重复的行(因为ON DUPLICATE KEY
只是将该列设置为相同的插入值(,那么您可以使用INSERT IGNORE INTO...
,这将阻止它引发错误。您也不需要ON DUPLICATE KEY
子句。
。。。如果使用INSERT IGNORE语句,则包含无效数据的行将忽略导致错误的行,并且具有有效数据的行插入表格
https://www.mysqltutorial.org/mysql-insert-ignore/