pyhton 操作mysql数据库的事务怎么写?

我有一个需求:
1、导入新数据前trunk清空mysql中A表的数据;
2、导入A表新数据。
2个操作要么一起成功,要么一起失败,是不是应当用事务来做?怎么写?请教,谢谢!

import mysql.connector

try:
    conn = mysql.connector.connect(host='localhost',
                                   database='数据库名字',
                                   user='用户',
                                   password='密码')

    conn.autocommit = False
    cursor = conn.cursor()
    # 清空A表数据 
    sql_update_query = """TRUNCATE TABLE A;"""
    cursor.execute(sql_update_query)

    # 导入数据
    sql_update_query = """insert into table_name values();"""
    cursor.execute(sql_update_query)
    print("success")

    # 提交
    conn.commit()

except mysql.connector.Error as error:
    print("fail, rollback: {}".format(error))
    # 如果失败则回滚
    conn.rollback()
finally:
    # 关闭数据库连接
    if conn.is_connected():
        cursor.close()
        conn.close()
        print("connection is closed")

私信发了一个工具类给你,注意接收

非常感谢您的解答,明白了很多。但就我的实际应用来看,还有需要解惑的地方。
我导入了2个模块(如下),第一个是pymysql.Connect,可以自由利用sql增删改mysql,包括truncate清空就用这个;
第二个是sqlalchemy 模块,为了dataframe中的大量数据一次性导入数据库(用pymysql是不是只能一条一条写,sql非常长)
这2个模块如何联控形成事务?谢谢!


import pymysql
from sqlalchemy import create_engine
db=pymysql.Connect(host='127.0.0.1',user='root',passwd='123456',db='myfinance')#数据库连接
cursor_mysql=db.cursor()#数据库游标设置
engine=create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/myfinance') #连接本机的mysql数据库