如果在更新之前进行插入,是否需要提交代码?

时间:2014-09-07 18:25:37

标签: python mysql

我有以下SQL:

INSERT IGNORE...
UPDATE ITEM...

我需要在两个语句之间做一个conn.commit()吗?或者我可以在最后提交所有内容,更新是否会自动获取SQL中“暂存提交”的项目?

self.cursor.execute('INSERT IGNORE INTO main_catalog (apple_id, provider_id) VALUES (%s, %s)', (apple_id, provider_obj))
self.conn.commit() # IS THIS NEEDED HERE?
self.cursor.execute('''UPDATE main_catalog SET 
                       show_title=%s, artwork_apple_url=%s, title=%s, itunes_url=%s, 
                       network_name=%s, video_length=%s, episode_production_number=%s, 
                       synopsis=%s, date_last_updated_affiliate=NOW()''',
                       (show_title, artwork_apple_url, episode_title, itunes_url, network_name, video_length, episode_production_number, synopsis))

1 个答案:

答案 0 :(得分:0)

不,除非您关闭连接,否则提交永远不会需要。它可以在long语句之间用于保存当前状态并获得更好的性能,但即使没有提交,之前的修改也存在,它们只是在提交之前(甚至在使用自动提交之前)才保存到磁盘。

不建议提交临时状态,因为在两次提交中你处于事务中,这意味着你可以确定所有的更改都将完成或者没有,这通常是可取的。因此,如果您没有任何其他指示,请仅提交稳定的数据。