zoukankan      html  css  js  c++  java
  • python 批量删除mysql前缀相同的表

    1,一般游戏log数据库会存储大量的玩家行为日志,一种行为一张表,每天生成一张新表,一天会有30+张不同行为的表,通常会保留玩家日志1年左右,对于超过1年的日志需要删除

    2,log数据库一年会保存1W多张表格,用python写个工具,来高效批量的删除表格

    解决思路:

    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%';

    执行结果如下:

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

    drop table OpTradeInfo_160421;

    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()
  • 相关阅读:
    speechSynthesis 离线语音合成 浏览器自动播报
    提问的智慧
    实用工具
    《大数据时代》——思维导图
    数据分析技能提升十大建议
    vue根据权限生成动态路由及导航菜单
    vue中实现JavaScript桌面消息通知(push.js)
    vue中如何封装axios及如何使用
    启用多个服务器的webpack配置
    移动端input获取焦点弹出输入框时影响fixed布局的问题
  • 原文地址:https://www.cnblogs.com/rayong/p/8487153.html
Copyright © 2011-2022 走看看