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随机生成数据后插入到PostgreSQL
Jul 28 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
新手入门学习python Numpy基础操作
Mar 02 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
Python源码解析之List
May 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 mail to 配置详解
2014/01/16 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
JS实现商品筛选功能
2020/08/19 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
Python迭代器和生成器介绍
2015/03/06 Python
Python决策树分类算法学习
2017/12/22 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
Python构建图像分类识别器的方法
2019/01/12 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
和平主题的演讲稿
2014/01/12 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
个人创业事迹材料
2014/12/30 职场文书
答谢酒会主持词
2015/07/02 职场文书
运动会通讯稿600字
2015/07/20 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书