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 Socket编程入门教程
Jul 11 Python
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
Python中装饰器高级用法详解
Dec 25 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
Python之批量创建文件的实例讲解
May 10 Python
Python进阶之@property动态属性的实现
Apr 01 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
python批量创建变量并赋值操作
Jun 03 Python
Python必备技巧之函数的使用详解
Apr 04 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压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
php动态生成函数示例
2014/03/21 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
python的Template使用指南
2014/09/11 Python
Python中os.path用法分析
2015/01/15 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python如何查看系统网络流量的信息
2016/09/12 Python
python如何求解两数的最大公约数
2018/09/27 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
关于毕业的中学校园广播稿
2014/01/26 职场文书
见习报告的格式
2014/11/04 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
学生检讨书怎么写
2015/05/07 职场文书
管辖权异议上诉状
2015/05/23 职场文书
男生贾里读书笔记
2015/06/30 职场文书
签约仪式致辞
2015/07/30 职场文书