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中的元类编程入门指引
Apr 15 Python
python rsa 加密解密
Mar 20 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
python语言中with as的用法使用详解
Feb 23 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
Python批量启动多线程代码实例
Feb 18 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 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中使用Oracle数据库(3)
2006/10/09 PHP
php输出xml属性的方法
2015/03/19 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
php时间计算相关问题小结
2016/05/09 PHP
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
使用python分析git log日志示例
2014/02/27 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python友情链接检查方法
2015/07/08 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
python非递归全排列实现方法
2017/04/10 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
篮球友谊赛通讯稿
2014/10/10 职场文书
听课评课活动心得体会
2016/01/15 职场文书
2019各种保证书范文
2019/06/24 职场文书
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
golang连接MySQl使用sqlx库
2022/04/14 Golang
MySQL数据库表约束讲解
2022/06/21 MySQL
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers