日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/9/18 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python mysql批量更新_Python批量删除mysql中千万级大量数据的脚本分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景描述

線上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 mysql批量更新_Python批量删除mysql中千万级大量数据的脚本分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。