场景描述

线上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批量删除mysql中千万级大量数据的脚本分享相关推荐

  1. python查询千万级数据_Python批量删除mysql中千万级大量数据

    场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200g,最后问了运营,可以只保留最近3天的,前面的数据,只 ...

  2. python mysql批量更新_Python批量删除mysql中千万级大量数据的脚本分享

    场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只 ...

  3. python批量删除文件名_python批量删除文件名中的未知字符

    python 批量删除文件名中的未知字符 如上图所示, 需要修改的文件名的个数超过 500 个, 如果一个一个的删除非常的费时间, 现 在用 python 修改很容易,方便又省时间,具体步骤如下 1 ...

  4. python列表去掉特定项_python实现删除列表中某个元素的3种方法

    python中关于删除list中的某个元素,一般有三种方法:remove.pop.del: 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 举例说明: ? [1, 3, 4, 5, ...

  5. python读取excel日期和时间数据_python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。...

    如何通过python写入date数据了? 写入还是很简单的. import xlwt3 import  datetime as dt workbook = xlwt.Workbook() worksh ...

  6. Java如何给Mysql中插入year类型数据

    文章目录 Java如何给Mysql中插入year类型数据 实际问题: 解决方案: 从数据库中读取year类型数据到Java 从Java中往数据库存储year数据 Java如何给Mysql中插入year ...

  7. python列表中怎么去掉空值_Python 如何删除列表中的空值

    今天在获取android性能CPU测试数据时,发现这么一个问题: # -*- coding:utf-8 -*- import os import time cpuInfo = os.popen(r'a ...

  8. MyBatis使用in进行列表中数据的批量删除

    MyBatis使用in 准备 使用in进行列表中数据的批量删除 准备 数据库表 bean 使用in进行列表中数据的批量删除 以删除age in (20,43,99)的数据项为例.很明显此时不可以使用# ...

  9. 如何批量删除mysql的数据库_如何快速批量删除Mysql数据库中的数据表

    一个mysql数据库中,是可以同时安装几个网站程序的,在使用中,我们只需要用不同的数据库表前缀来区分就可以了.但随着我们不断调试,那么数据 库中的表,就会一天天的多起来,如一个一个的删除就很麻烦.很辛 ...

最新文章

  1. IPv6 与 IPv4现状
  2. java消息通信_原生 Java 客户端进行消息通信
  3. Curator实现分布式锁的基本原理-LockInternals.internalLockLoop
  4. Python应用实战-Clumper | dplyr式的Python数据操作包
  5. 该计算机没有运行windows无线服务器,老司机示范win7系统诊断提示此计算机上没有运行的windows无线服务的恢复方法...
  6. Redis学习---(8)Redis 哈希(Hash)
  7. 华为谈“不造车” ,每辆车上赚1万元。王兴:特斯拉终于遇到真正的对手!...
  8. 【Java】@transient代表着什么
  9. FreeRTOS源码分析与应用开发09:低功耗Tickless模式
  10. PyTorch的hook及其在Grad-CAM中的应用
  11. 我如何判断漏洞奖励计划是否值得参加?如何获得最大收益?
  12. JS+dom简单运动实现
  13. 蛋花花分享8个能提升Web前端开发技能的技巧
  14. 1.Prometheus 监控技术与实践 --- 云计算时代的监控系统
  15. CentOS7.0下安装PHP5.6.30服务
  16. html 星星字体,做华丽的星星文字效
  17. 自动机器学习框架介绍与使用(flaml、h2o)
  18. 京东手机电商大数据统计平台搭建
  19. Java:判断是一年的第几天
  20. 集成平台即服务,云和……独角兽

热门文章

  1. 【前端之路】前端技术简介,大前端的发展史
  2. docker 的启动常用容器命令
  3. 【典型案例】远距离水位无线传输测控系统
  4. Python进阶之偏函数
  5. 计算机网络通信概述题库
  6. 深入剖析Glide源码-4.15版本(二)
  7. Oracle插入数据
  8. JS中==操作符的强制类型转换规定
  9. arm64的ioremap_ioremap函数解析
  10. 华为云服务器mysql数据恢复案例