mySQL在重复键上抱怨,即使表是空的

时间:2014-06-05 11:31:41

标签: python mysql sql

我使用Python(2.7)并使用MySQLdb目录来控制我的SQL数据库(MySQL workbench 6)

我有一个脚本每十分钟更新一次sql表。该脚本首先删除表中的所有内容,然后再次插入所有行(使用更新的数据)。 这是我的代码草图:

db=MySQLdb.Connect("localhost", "admin", "admin")
cursor = db.cursor()
cursor.execute("use my_scheme")
cursor.execute("delete from my_table")
for item in updated_item_list:
    cursor.execute("insert into my_table values (%s, %s, %s)", (item[0], item[1], item[2]))
    db.commit()
    cursor.fetchall()

现在,出于某种原因,我有时会遇到奇怪的行为:脚本开始更新表格,而某些行实际上正在插入,但它会在中间停止:

_mysql_exceptions.IntegrityError: (1062, "Duplicate entry for key 'PRIMARY'")

每次都会选择不同的密钥作为重复密钥。怎么会这样?之前已删除所有条目。有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您似乎将常量插入数据库,而不是实际值。请尝试此操作。

cursor.execute("INSERT INTO my_table values " +
"(val1, val2, val3) VALUES (%s, %s, %s, %s)", 
(val1, val2, val3))