python 批量刪除mysql前綴相同的表

1,通常遊戲log數據庫會存儲大量的玩家行爲日誌,一種行爲一張表,天天生成一張新表,一天會有30+張不一樣行爲的表,一般會保留玩家日誌1年左右,對於超過1年的日誌須要刪除python

2,log數據庫一年會保存1W多張表格,用python寫個工具,來高效批量的刪除表格mysql

 

解決思路:sql

1,分析表名,找出相同的規律,本人維護的遊戲log庫表名後綴一般是以 年+月+日生成的,有了這個規律就好辦了數據庫

2,用一條sql語法生成出drop table 表名服務器

#下面這條語法是模糊匹配找出2016年的全部表,而後生成'drop table ', table_name, ';'刪除語法工具

select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables Where table_name LIKE '%_16%';spa

執行結果以下:日誌

drop table LogAccLogout_160401;
drop table LogAccLogout_160402;
drop table LogAccLogout_160403;code

drop table OpTradeInfo_160421;orm

drop table OpTradeInfo_160422;
drop table OpTradeInfo_160423;
drop table OpTradeInfo_160424;

 

3,先把執行的結果保存在文件中,用來給python腳本讀取用的

4,python循環逐行讀取剛剛保存的文件,而後mysql模塊登錄mysql服務器

用模塊是MySQLdb,安裝方法:yum -y install MySQL-python*

 

代碼以下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import MySQLdb

db = MySQLdb.connect("192.168.135.156","mysql_user","mysql_password","game_log" )

cursor = db.cursor() #得到mysql遊標

open_file = open('jieguo_result_201_17.txt','r') #先打開已保存的文件

for line in open_file.readlines():  #for循環逐行讀取每條
    try:
        print line,
        cursor.execute(line) #執行sql刪除語法
        db.commit()    #提交請求
    except Exception as e:
        print e
        if e:      #遇到錯誤直接跳過,繼續執行後面的刪除語法
            continue

db.close()
open_file.close()
相關文章
相關標籤/搜索