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()
因为经常熬夜,所以我的肝好像不太好,你可以叫我小心肝吗?

浙公网安备 33010602011771号