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脚本
Sep 01 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
详解Python中heapq模块的用法
Jun 28 Python
Python中static相关知识小结
Jan 02 Python
python3实现多线程聊天室
Dec 12 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
django 外键创建注意事项说明
May 20 Python
Django REST 异常处理详解
Jul 15 Python
基于Python的EasyGUI学习实践
May 07 Python
pytorch中[..., 0]的用法说明
May 20 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 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
MySQL连接数超过限制的解决方法
2011/07/17 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
php生成图片验证码的方法
2016/04/15 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
护士实习自我鉴定
2013/10/22 职场文书
入党积极分子思想汇报
2014/01/02 职场文书
对公司合理化的建议书
2014/03/12 职场文书
伦敦奥运会口号
2014/06/13 职场文书
学校献爱心活动总结
2014/07/08 职场文书
邓小平理论心得体会
2014/09/09 职场文书
庆六一宣传标语
2014/10/08 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
Python爬虫基础初探selenium
2021/05/31 Python