在下面的示例代码中,col1和col2是数据库中的主键!
我的问题是:* * 是否应将它们添加到ON DUPLICATE KEY UPDATE之后的代码部分中,因为它已经在代码中,或者是否应不添加它们**?
示例代码:
with Dl.cursor() as cursor:
for chunk in np.array_split(DataFrame, 10, axis=0):
for i in chunk.index:
cursor.execute("INSERT INTO table_example (col1, col2, col3, col4) VALUES (%s, %s, %s, %s) ON DUPLICATE KEY UPDATE col1 = col1, col2 = col2, col3 = col3, col4 = col4;", (chunk['col1'][i], chunk['col2'][i], chunk['col3'][i], chunk['col4'][i]))
# col3 = col3, col4 = col4; ... Which version is correct?
Dl.commit()
cursor.close()
Dl.close()
2条答案
按热度按时间byqmnocz1#
没有必要更新唯一键或主键,因此您的SQL可以如下所示:
SQL已经知道它在col1和col2的上下文中作为重复键。
因此,对于您的代码,它应该类似于:
4xrmg8kj2#
如果您没有其他唯一键可以导致执行ON DUPLICATE,则col1和col2不会更改,您应该将其删除。
如果您确实有其他唯一键,那么您可能并不希望更改col1和col2。