dataframe在Mysql中批量修改——pymysql、pandas

xiaoxiao2021-02-28  35

根据id修改数据库的某一列(for 循环执行语句大批量修改是不行的) 1、连接数据库(用root权限,权限不够创建表等操作会出问题) 2、sql语句 ①创建临时表(关键字Temporary,处理完自动删除的表) ②批量插入临时表,ID是int类型也用%s(用到了pymysql的excutemany) dataframe转化成特殊list类型 ③根据ID修改操作的字段,我这里是nlp_name_semantics_v3 3、pymysql执行sql语句 #本地测试数据库 conn = pymysql.connect(host='127.0.0.3', port=3306, user='root', passwd='123456789', db='test',charset='utf8') # 使用cursor()方法获取操作游标 cur = conn.cursor() #sql语句 主键 操作字段 sql_update1 = "create TEMPORARY table tmp(id int(11) PRIMARY KEY ,nlp_name_semantics_v3 varchar(255))" sql_update2 = "insert into 临时表 values (%s, %s);" #这个格式很重要,dataframe是不能当此处参数格式的 param = data[['id','nlp_name_semantics_v3']].values.tolist() sql_update3 = "update 修改表 as x, 临时表 as t \ set x.nlp_name_semantics_v3=t.nlp_name_semantics_v3 \ where x.id=t.id;" #操作数据库 try: cur.execute(sql_update1) #向sql语句传递参数 cur.executemany(sql_update2,param) cur.execute(sql_update3) conn.commit() except Exception as e: #错误回滚 conn.rollback() print('发生错误,已经回滚') finally: conn.close()
转载请注明原文地址: https://www.6miu.com/read-2625196.html

最新回复(0)