zoukankan      html  css  js  c++  java
  • pymysql监测表schema

    1 需求描述

    监测每张表的状态变更情况,主要有三个字段 schema,version和status。
    其中schema表示一张表,version表示表的版本,表每变更一次版本加1,status表示表的状态 1表示有效,-1表示失效。
    下面用简易版实例展示实现过程。

    2 需求实现

    2.1 建表

    CREATE TABLE `test_table` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `schema` text,
      `version` int(11) DEFAULT NULL,
      `status` tinyint(4) DEFAULT '0' COMMENT '-1:过期;1:有效',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8mb4
    

    2.2 mysql命令行实现

    INSERT INTO test_table (`schema`,VERSION, STATUS) VALUES ('user',1,1);
    SELECT MAX(id) INTO @maxid FROM test_table WHERE `schema`='user';
    UPDATE test_table SET STATUS=-1 WHERE id < @maxid AND `schema`='user';
    
    
    SELECT MAX(VERSION) INTO @maxversion FROM test_table WHERE `schema`='user';
    SET @rownum=@maxversion;
    UPDATE test_table SET VERSION =@rownum+1 WHERE id = @maxid AND `schema`='user'
    

    2.3 pymysql实现

    import pymysql
    
    
    def db_count(db_name,table_name):
        # 显示有多少条记录
        db = pymysql.connect(host='127.0.0.1', user='root', passwd='xxxxxx', db=db_name, charset='utf8')
        cursor = db.cursor()
        
        #cursor.execute(query)
        cursor.execute("INSERT INTO test_table (`schema`,VERSION, STATUS) VALUES ('user',1,1);")
        cursor.execute("SELECT MAX(id) INTO @maxid FROM test_table WHERE `schema`=%s;",age)
        cursor.execute("UPDATE test_table SET STATUS=-1 WHERE id < @maxid AND `schema`=%s;",age)
        cursor.execute("SELECT MAX(VERSION) INTO @maxversion FROM test_table WHERE `schema`=%s;",age)
        cursor.execute("SET @rownum=@maxversion;")
        cursor.execute("UPDATE test_table SET VERSION =@rownum+1 WHERE id = @maxid AND `schema`=%s;",age)
        
        db.commit()    
        cursor.close()
        # 关闭数据库
        db.close()
    
    
    if __name__=='__main__':
        db_name = 'test' #mysql数据库名
        table_name = 'test_table'  #mysql数据表名
        age = 'user'
        db_count(db_wm,db_nm)
    

    2.4 实现效果

  • 相关阅读:
    Go并发
    frida打印class的信息--java反射
    Go嵌入类型
    Go方法集-应该传值类型还是指针类型?
    springboot使用unidbg遇到logback和sl4j依赖冲突,正确配置文件
    Eureka 微服务注册发现开源框架
    呼吸机CPAP与APAP:哪个更好?
    如何看睡眠监测报告
    抓包工具 tcpdump 用法说明
    利用ROS的samba功能实现centos定期备份ROS配置
  • 原文地址:https://www.cnblogs.com/eugene0/p/13855667.html
Copyright © 2011-2022 走看看