使用Python在MySQL上执行upstart操作



我有一个大约有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/

最新更新