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

根据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()
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值