我想用python监听 mysql执行的sql语句 时时监控
时间: 2023-08-04 17:37:03 浏览: 143
你可以使用PyMySQL库来监听MySQL执行的SQL语句,具体步骤如下:
1. 安装PyMySQL库:
```
pip install pymysql
```
2. 连接MySQL数据库:
```
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='root', database='java')
```
3. 创建游标对象并设置为字典类型:
```
cursor = conn.cursor(pymysql.cursors.DictCursor)
```
4. 设置MySQL的binlog_format为ROW:
```
cursor.execute('SET @@global.binlog_format = ROW')
```
5. 开启MySQL的general_log:
```
cursor.execute('SET GLOBAL general_log = 1')
```
6. 获取general_log文件路径:
```
cursor.execute("SHOW VARIABLES LIKE 'general_log_file'")
result = cursor.fetchone()
general_log_file = result['Value']
```
7. 监听general_log文件变化:
```
import os
file = open(general_log_file, 'r')
file.seek(0, os.SEEK_END)
while True:
line = file.readline()
if not line:
time.sleep(1)
continue
if 'Execute' in line:
print(line)
```
在这个例子中,我们使用PyMySQL库将MySQL的binlog_format设置为ROW,并开启general_log,然后获取general_log文件路径并监听文件变化。如果监听到文件中有Execute关键字的行,就打印出该行内容。
注意,开启general_log可能会对MySQL的性能产生影响,所以在生产环境中使用时,需要进行测试和调优。另外,这种方式只适用于监听本机的MySQL,如果要监听远程的MySQL,可以使用PyMySQL的replication模块来实现binlog的监听。
阅读全文