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类的多重继承问题深入分析
Nov 09 Python
python3序列化与反序列化用法实例
May 26 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
python实现报表自动化详解
Nov 16 Python
对numpy.append()里的axis的用法详解
Jun 28 Python
python自动循环定时开关机(非重启)测试
Aug 26 Python
python多线程实现TCP服务端
Sep 03 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
python如何更新包
Jun 11 Python
python3代码中实现加法重载的实例
Dec 03 Python
Python实现日志实时监测的示例详解
Apr 06 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
风格模板初级不完全修改教程
2006/10/09 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
javascript 内存回收机制理解
2011/01/17 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
浅谈js中的this问题
2017/08/31 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
推荐11个实用Python库
2015/01/23 Python
在Python的web框架中配置app的教程
2015/04/30 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
sklearn+python:线性回归案例
2020/02/24 Python
Python turtle库的画笔控制说明
2020/06/28 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
施工工地安全标语
2014/06/07 职场文书
学校2014年度工作总结
2014/12/06 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
演讲比赛主持词
2015/06/29 职场文书
工作简报范文
2015/07/21 职场文书
毕业生入职感言
2015/07/31 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL