python pymysql 事务 executemany 插入MySQL

使用pymysql,进行事务型一次性插入数据

1、首先用 pandas 将 数据整合好

2、链接MySQL,开启事务

conn = pymysql.connect(host=GC_HOST, user=GC_USER, password=GC_PASSWORD, database=GC_DATABASE, charset='utf8')
cursor = conn.cursor()
# 开启事务
conn.begin()

3、 设置列名,将dataframe 的数据列名和 MySQL上的列名对应

# 列名
columns = ','.join(list(qianchuan_data.columns))
# 将所有的dafaframe 数据转换成 tuple类型,因为 executemany 插入的数据类型是类列表tuple
data_list = [tuple(i) for i in qianchuan_data.values] # 有多少列就有多少个占位符 s_count = len(data_list[0]) * "%s,"

4、设置插入数据库语句

insert_sql = "insert into " + "数据表名字" + " (" + columns + ") values (" + s_count[:-1] + ");"
logger.info(insert_sql)

5、利用事务,将所有的数据多批插入数据库

try:
cursor.executemany(insert_sql, data_list)
conn.commit()
cursor.close()
conn.close()
logger.info('Success Insert Data!')
except Exception as e:
# 万一失败了,要进行回滚操作
logger.error(e)
conn.rollback()
cursor.close()
conn.close()

  

 

posted @ 2021-06-17 19:41  小新分身  阅读(1137)  评论(0)    收藏  举报