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()