久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Python批量刪除mysql中千萬級大量數據的腳本分享

瀏覽:93日期:2022-07-03 13:46:07

場景描述

線上mysql數據庫里面有張表保存有每天的統計結果,每天有1千多萬條,這是我們意想不到的,統計結果咋有這么多。運維找過來,磁盤占了200G,最后問了運營,可以只保留最近3天的,前面的數據,只能刪了。刪,怎么刪?因為這是線上數據庫,里面存放有很多其它數據表,如果直接刪除這張表的數據,肯定不行,可能會對其它表有影響。嘗試每次只刪除一天的數據,還是卡頓的厲害,沒辦法,寫個Python腳本批量刪除吧。具體思路是:

每次只刪除一天的數據; 刪除一天的數據,每次刪除50000條; 一天的數據刪除完,開始刪除下一天的數據;

Python代碼

# -*-coding:utf-8 -*-import sys# 這是我們內部封裝的Python Modulesys.path.append(’/var/lib/hadoop-hdfs/scripts/python_module2’)import keguang.commons as commonsimport keguang.timedef as timedefimport keguang.sql.mysqlclient as mysqldef 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 編程
相關文章:
主站蜘蛛池模板: 隆安县| 淮滨县| 南皮县| 奉新县| 灵宝市| 西乌珠穆沁旗| 米泉市| 阜新| 乌拉特后旗| 鄂伦春自治旗| 微博| 三穗县| 温泉县| 淳化县| 武冈市| 象山县| 定日县| 曲阜市| 大姚县| 福贡县| 大理市| 虹口区| 道孚县| 哈巴河县| 澄迈县| 麻栗坡县| 汽车| 绥江县| 屏山县| 望都县| 佛教| 北辰区| 巴林右旗| 即墨市| 万盛区| 洛南县| 屏边| 卓尼县| 上饶市| 土默特右旗| 特克斯县|