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()
相关文章
相关标签/搜索