一张表存储历史数据,最多存储HISTORY_TABLE_MAX_ROWS条数据,当表中数据未达到HISTORY_TABLE_MAX_ROWS,直接插入;如果达到的话需要保证插入新数据的时候将最旧的数据删除
这里使用先update最新数据,然后再重新update全表的id号-1吗,,这样就能实现这个功能了。
def update_history_db(conn, cur, param , HISTORY_TABLE_MAX_ROWS, table_name):# 注意,这里的conn和cur不是函数内部分配的select_sql = "SELECT id from %s order by id desc limit 1" % table_nameselect_sql_id = "SELECT id from %s order by id limit 1" % table_nameinsert_sql = "INSERT into %s values(0, %s)" % (table_name, param)update_sql_id = "UPDATE %s SET id = id - 1 " % table_nametry:# 首先判断一下表单行数有没有超过阈值result = SELECT(conn, cur, select_sql)rows = 0for row in result:rows = row[0]if rows < HISTORY_TABLE_MAX_ROWS:INSERT(conn, cur, insert_sql)else:# 首先获取最小的idresult = SELECT(conn, cur, select_sql_id)min_id = 1for row in result:min_id = row[0]update_sql = "UPDATE %s SET id = %s, param = %s where id = %s" % (table_name, (HISTORY_TABLE_MAX_ROWS + 1), param)UPDATE(conn, cur, update_sql)# 然后更新id自减1UPDATE(conn, cur, update_sql_id)except BaseException:logging.critical("Function: update_all_nums_history_db stop ...")return