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中字典的基本知识初步介绍
May 21 Python
Ubuntu下安装PyV8
Mar 13 Python
解析Python中的__getitem__专有方法
Jun 27 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
Flask数据库迁移简单介绍
Oct 24 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Python自定义简单图轴简单实例
Jan 08 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
python爬虫的一个常见简单js反爬详解
Jul 09 Python
Python统计分析模块statistics用法示例
Sep 06 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
Python 使用生成器代替线程的方法
Aug 04 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
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
解决margin 外边距合并问题
2019/07/03 HTML / CSS
实习自我鉴定模板
2013/09/28 职场文书
毕业生动漫设计求职信
2013/10/11 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
感恩教育主题班会
2015/08/12 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
python 实现mysql自动增删分区的方法
2021/04/01 Python
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle