我有一个非常简单的问题:我使用MySQL和Python。我想首先删除它的内容并随后插入新数据来重新填充表格。但是,在此过程中,我不希望有一个空表(或者至少只是非常短的时间)。
所以,据我记得,我可以组合几个SQL命令,然后将它们提交到数据库。确保一切按照我的描述运作。所以我想知道我的猜测是否正确?
conn = mysql.connector.connect( **Configuration.conn_params )
c = conn.cursor()
sql = """DELETE FROM mytable;"""
c.execute( sql )
sql = """INSERT INTO mytable
( col1, col2, col3 )
VALUES
( val1, val2, val3);"""
c.execute( sql )
conn.commit() #run the deletion and insertion of table data "simultaneously"
conn.close()
答案 0 :(得分:2)
提供:
mytable
使用事务存储引擎(例如InnoDB);以及
您不会覆盖autocommit
连接参数的默认值(false)
然后,从任何其他数据库会话的角度来看,这两个操作将以原子方式(作为一个)执行:没有他们在数据库中看到中间状态的瞬间(即记录已被删除,但尚未插入新记录。