-1

我有一个非常简单的问题:我使用 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()
4

1 回答 1

2

前提是:

  1. mytable使用事务存储引擎(例如 InnoDB);和

  2. 您不会覆盖autocommit连接参数的默认 (false) 值

然后,从任何其他数据库会话的角度来看,这两个操作将被原子地执行(作为一个):他们不会看到数据库中的中间状态(即记录已被删除,但新的尚未插入的)。

于 2013-07-19T09:54:26.357 回答