Python批量删除mysql中千万级大量数据的脚本分享

 更新时间:2020年12月03日 15:03:28   作者:柯广  
这篇文章主要介绍了Python批量删除mysql中千万级大量数据的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下

场景描述

线上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数据结构之双向链表的定义与使用方法示例

    这篇文章主要介绍了Python数据结构之双向链表的定义与使用方法,结合实例形式分析了Python双向链表的概念、原理、使用方法及相关注意事项,需要的朋友可以参考下
    2018-01-01
  • Jinja2实现模板渲染与访问对象属性流程详解

    Jinja2实现模板渲染与访问对象属性流程详解

    要了解jinja2,那么需要先理解模板的概念。模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强,并且更加容易理解和维护。模板简单来说就是一个其中包含占位变量表示动态部分的文,模板文件在经过动态赋值后,返回给用户
    2023-03-03
  • Python数组与列表的区别解析

    Python数组与列表的区别解析

    列表因为其存储的类型可以是任何对象,因此列表的用处更广泛,更多样化,并且列表可以有更多的存储空间去使用,而数组使用的空间就相对较少,这篇文章主要介绍了Python数组与列表的区别,需要的朋友可以参考下
    2023-11-11
  • python函数与方法的区别总结

    python函数与方法的区别总结

    在本篇文章里小编给大家整理了关于python函数与方法的区别的相关知识点代码内容,需要的朋友们学习下。
    2019-06-06
  • python文件处理--文件读写详解

    python文件处理--文件读写详解

    这篇文章主要介绍了Python 处理文件的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • python进程管理工具supervisor的安装与使用教程

    python进程管理工具supervisor的安装与使用教程

    supervisor是用python写的一个进程管理工具,用来启动,重启,关闭进程。下面这篇文章主要给大家介绍了关于python实现的进程管理工具supervisor的安装与使用的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • python画图--输出指定像素点的颜色值方法

    python画图--输出指定像素点的颜色值方法

    今天小编就为大家分享一篇python画图--输出指定像素点的颜色值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • OpenCV黑帽运算(BLACKHAT)的使用

    OpenCV黑帽运算(BLACKHAT)的使用

    本文主要介绍了OpenCV黑帽运算(BLACKHAT)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python写的贪吃蛇游戏例子

    Python写的贪吃蛇游戏例子

    这篇文章主要介绍了Python写的贪吃蛇游戏例子,练手作品,又好玩又可以学到东西,需要的朋友可以参考下
    2014-06-06
  • tensorflow2.0保存和恢复模型3种方法

    tensorflow2.0保存和恢复模型3种方法

    今天小编就为大家分享一篇tensorflow2.0保存和恢复模型3种方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论