我有以下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))
答案 0 :(得分:0)
不,除非您关闭连接,否则提交永远不会需要。它可以在long语句之间用于保存当前状态并获得更好的性能,但即使没有提交,之前的修改也存在,它们只是在提交之前(甚至在使用自动提交之前)才保存到磁盘。
不建议提交临时状态,因为在两次提交中你处于事务中,这意味着你可以确定所有的更改都将完成或者没有,这通常是可取的。因此,如果您没有任何其他指示,请仅提交稳定的数据。