MySQL:delete和insert在python中的一个commit语句中

2024-09-27 04:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 数据命令数据库内容executesqlconnector过程
1条回答
网友
1楼 · 发布于 2024-09-27 04:28:27

前提是:

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

  2. 不重写autocommit连接参数的默认(false)值

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

相关问题 更多 >

    热门问题