• 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 实现效果

  • 相关阅读:
    终端设备 tty,pty,pts 概念与文件描述符的联系
    Nginx – access_log格式及配置
    Nginx – rewrite 配置 URL重写及301跳转原理图
    nginx命令启动及选项
    nginx-web身份验证
    nginx_server_location对客户资源的辨别规则
    利用Session防止表单重复提交
    归并排序
    Cookie/Session的机制与安全
    HTTP Cookie Session
  • 原文地址:https://www.cnblogs.com/eugene0/p/13855667.html
Copyright © 2020-2023  润新知