python pymysql处理mysql数据

记一次工作中遇到问题,使用python解决的。一下感觉当时学的时候写2048没白搭,哈哈哈哈。。。

问题:

在项目生产环境中,办理业务时上传附件为base64,且把请求的参数统一保存到了log表,项目未上线前,还没什么事,上线后,表膨胀过于大了,实际上log表里的文件base64已经不会再用到了。

需求:

这就需要清理下log表中一个bizdata字段中存储的json,把里面的base64删除,再更回表里。

解决:

当然,你可以用java解决,可以用各种其他办法解决,更蠢一点的甚至1w多条数据,一个个往出抠,手动删除再ctrl+v回去都行。。。当然这个太蠢了,不提也罢。。。尴尬。。。

python脚本:

用pymysql连接操作数据库,
用json处理数据。

# -*- coding: utf-8 -*-
import pymysql
import json

conn = pymysql.connect(host='127.0.0.1', user="root", passwd="root", db="kaoshi_db", port=3307, charset="utf8")
cur = conn.cursor()
# 查询sql
sql = 'SELECT LOG_ID,biz_data, BIZ_DSCR,length(biz_data) as "biz_data_length",' \
       'CRTE_TIME FROM user_emp_biz_log_c ' \
       'WHERE length(biz_data)>3687060 ' \
       'order by length(biz_data) desc'
# 修改sql
updSql = 'update user_emp_biz_log_c set biz_data= %s where LOG_ID = %s'
# 先查询
cur.execute(sql)
data = cur.fetchall()

for param in data:
    print(param[0])
    print(param[1])
    jsonD = json.loads(param[1])
    jsonD["fileList"] = ""
    ops = (json.dumps(jsonD, ensure_ascii=False), param[0])
    cur.execute(updSql, ops)

# 提交事务
conn.commit()

# 关闭资源连接
cur.close()
conn.close()
print("数据库断开连接!")

你可能感兴趣的:(工作中。。。,python,mysql)