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采集腾讯新闻实例
Jul 10 Python
使用Python编写vim插件的简单示例
Apr 17 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
如何在Python中编写并发程序
Feb 27 Python
python图书管理系统
Apr 05 Python
python如何将图片转换为字符图片
Aug 19 Python
Python 函数返回值的示例代码
Mar 11 Python
Python基础之函数的定义与使用示例
Mar 23 Python
python根据多个文件名批量查找文件
Aug 13 Python
解决paramiko执行命令超时的问题
Apr 16 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
python中os.path.join()函数实例用法
May 26 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
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
node.js超时timeout详解
2014/11/26 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
javascript操作cookie
2017/01/17 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
Python-基础-入门 简介
2014/08/09 Python
Python greenlet实现原理和使用示例
2014/09/24 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
保研专家推荐信范文
2015/03/25 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
Android中View.post和Handler.post的关系
2022/06/05 Java/Android