import pymysql import time # 连接MySQL数据库 conn = pymysql.connect(host='localhost', user='root', password='root', database='java') # 获取进程列表 def get_process_list(): cursor = conn.cursor() cursor.execute('SHOW FULL PROCESSLIST') result = cursor.fetchall() process_list = [] for row in result: process = { 'id': row[0], 'user': row[1], 'host': row[2], 'db': row[3], 'command': row[4], 'time': row[5], 'state': row[6], 'info': row[7] } process_list.append(process) return process_list # 实时监控 while True: process_list = get_process_list() for process in process_list: if process['command'] == 'Query' and process['state'] == 'executing': print('执行SQL语句:', process['info'], '开始时间:', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(process['time']))) # 间隔1秒 time.sleep(1) # 关闭数据库连接 conn.close()这个代码跑起来 我再其它地方执行sql语句这里也没有输出
时间: 2024-03-15 16:43:47 浏览: 73
python mysql pymysql数据库连接池源代码
这段代码是一个实时监控MySQL数据库中正在执行的SQL语句的程序。它通过连接MySQL数据库,获取进程列表,判断进程的命令和状态,如果正在执行的是SQL语句,则输出相关信息。如果你在其他地方执行SQL语句,但这里没有输出,可能是因为你的SQL语句执行得太快了,没有被监控到。你可以尝试在执行SQL语句时加上一些sleep等待时间,看看是否能被监控到。或者你可以尝试修改代码,打印出所有进程的信息,看看是否有其他问题。
阅读全文