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 中的列表解析和生成表达式
Mar 10 Python
Python高效编程技巧
Jan 07 Python
Python中的lstrip()方法使用简介
May 19 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
8种常用的Python工具
Aug 05 Python
python3将变量输入的简单实例
Aug 19 Python
python实现移动木板小游戏
Oct 09 Python
python开发的自动化运维工具ansible详解
Aug 07 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
vue-router单页面路由
2017/06/17 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
python合并文本文件示例
2014/02/07 Python
python读写二进制文件的方法
2015/05/09 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
python正则表达式的使用
2017/06/12 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
python实战教程之自动扫雷
2018/07/13 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
Python如何实现机器人聊天
2020/09/10 Python
python如何实现DES加密
2020/09/21 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
九年级英语教学反思
2014/01/31 职场文书
2015年幼师工作总结
2015/04/28 职场文书
酒桌上的开场白
2015/06/01 职场文书
环保守法证明
2015/06/24 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL