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脚本来控制Windows Azure的简单教程
Apr 16 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
Python中扩展包的安装方法详解
Jun 14 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
python:print格式化输出到文件的实例
May 14 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
Jul 06 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
Python matplotlib可视化实例解析
Jun 01 Python
python中np是做什么的
Jul 21 Python
Django前后端分离csrf token获取方式
Dec 25 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中的Class的几点个人看法
2006/10/09 PHP
谈谈新手如何学习PHP
2006/12/14 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
webpack入门必知必会
2017/01/16 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
详解JS模块导入导出
2017/12/20 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
django页面跳转问题及注意事项
2019/07/18 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
python 如何上传包到pypi
2020/12/24 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
师范应届生教师求职信
2013/11/05 职场文书
后备干部考察材料
2014/02/12 职场文书
生物科学专业自荐书
2014/06/20 职场文书
一份文言文检讨书
2014/09/13 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
新手初学Java网络编程
2021/07/07 Java/Android
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏