Python批量删除mysql中千万级大量数据的脚本分享


Posted in Python onDecember 03, 2020

场景描述

线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多。运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只能删了。删,怎么删?
因为这是线上数据库,里面存放有很多其它数据表,如果直接删除这张表的数据,肯定不行,可能会对其它表有影响。尝试每次只删除一天的数据,还是卡顿的厉害,没办法,写个Python脚本批量删除吧。
具体思路是:

  • 每次只删除一天的数据;
  • 删除一天的数据,每次删除50000条;
  • 一天的数据删除完,开始删除下一天的数据;

Python代码

# -*-coding:utf-8 -*-

import sys

# 这是我们内部封装的Python Module
sys.path.append('/var/lib/hadoop-hdfs/scripts/python_module2')
import keguang.commons as commons
import keguang.timedef as timedef
import keguang.sql.mysqlclient as mysql

def run(starttime, endtime, regx):
 tb_name = 'statistic_ad_image_final_count'
 days = timedef.getDays(starttime,endtime,regx)
 # 遍历删除所有天的数据
 for day in days:
  print '%s 数据删除开始'%(day)
  mclient = getConn()
  sql = '''
  select 1 from %s where date = '%s' limit 1
  '''%(tb_name, day)
  print sql
  result = mclient.query(sql)
  # 如果查询到了这一天的数据,继续删除
  while result is not ():
   sql = 'delete from %s where date = "%s" limit 50000'%(tb_name, day)
   print sql
   mclient.execute(sql)
   sql = '''
   select 1 from %s where date = '%s' limit 1
   '''%(tb_name, day)
   print sql
   result = mclient.query(sql)
  print '%s 数据删除完成'%(day)
  mclient.close()

# 返回mysql 连接
def getConn():
 return mysql.MysqlClient(host = '0.0.0.0', user = 'test', passwd = 'test', db= 'statistic')

if __name__ == '__main__':
 regx = '%Y-%m-%d'
 yesday = timedef.getYes(regx, -1)
 starttime = '2019-08-17'
 endtime ='2019-08-30'
 run(starttime, endtime, regx)

以上就是Python批量删除mysql中千万级大量数据的脚本的详细内容,更多关于python 删除MySQL数据的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python使用rabbitmq实现网络爬虫示例
Feb 20 Python
Python的Django框架中settings文件的部署建议
May 30 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python实现识别手写数字大纲
Jan 29 Python
Python的CGIHTTPServer交互实现详解
Feb 08 Python
python使用Flask操作mysql实现登录功能
May 14 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
python 实现识别图片上的数字
Jul 30 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python基础之数据类型知识汇总
May 18 Python
python异步的ASGI与Fast Api实现
Jul 16 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 #Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 #Python
python 调整图片亮度的示例
Dec 03 #Python
Python 实现PS滤镜的旋涡特效
Dec 03 #Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 #Python
python字符串拼接+和join的区别详解
Dec 03 #Python
python二维图制作的实例代码
Dec 03 #Python
You might like
微信支付开发动态链接Native支付
2016/07/12 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
在python 中实现运行多条shell命令
2019/01/07 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
办公室前台的岗位职责
2013/12/20 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
地震捐款倡议书
2014/08/29 职场文书
机关党员公开承诺书
2014/08/30 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
民间个人借款协议书
2014/09/30 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书