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入门者的一些编程建议
Jun 15 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
python实现读Excel写入.txt的方法
Apr 29 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
python微信公众号之关键词自动回复
Jun 15 Python
python中强大的format函数实例详解
Dec 05 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
Apr 17 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
pandas抽取行列数据的几种方法
Dec 13 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导入Excel到MySQL的方法
2011/04/23 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
浅谈Python中数据解析
2015/05/05 Python
Python跳出多重循环的方法示例
2019/07/03 Python
python用match()函数爬数据方法详解
2019/07/23 Python
Python实现Restful API的例子
2019/08/31 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
大三毕业自我鉴定
2014/01/15 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2015年护士节慰问信
2015/03/23 职场文书
戒赌保证书
2015/05/11 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python