python 正则解析mysql慢日志

#!/usr/bin/python3
import re
slow_message = '''
# Time: 2021-04-23T11:45:34.547941+08:00
# User@Host: sysbench[sysbench] @  [127.0.0.1]  Id:   215
# Query_time: 0.000138  Lock_time: 0.000039 Rows_sent: 0  Rows_examined: 0
SET timestamp=1619149534;
INSERT INTO sbtest1 (id, k, c, pad) VALUES (49811, 49912, '10220485634-91999725679-19196059245-27016586998-15755374217-01375486173-63134319850-09341020024-22612796483-62654126985', '76715857161-08232266466-02982013956-69920229100-95612205979');
'''
slowlog_patern = '#\s+Time:\s+(?P<Time>.+)\n' \
              '#\s+User@Host:\s+(?P<user>\w+)\[\w+\]\s+@\s+' \
              '(?P<proxyHost>(\w|\[|\]|\.|\s)+)\s+Id:\s+(?P<threadID>\d+)\n' \
              '#\s+Query_time:\s+(?P<queryTime>\w+\.?\w+)\s+' \
              'Lock_time:\s+(?P<lockTime>\w+\.?\w+)\s+Rows_sent:\s+(?P<rowsSent>\d+)\s+' \
              'Rows_examined:\s+(?P<rowsExamined>\d+)\n' \
              '(use\s+(?P<use>.*);\n)?' \
              'SET\s+timestamp=(?P<sqlTimestamp>\d+);\n' \
              '(?P<sqlText>(.|\n)*)'
slow_log_regex = re.compile(slowlog_patern)
match = slow_log_regex.search(slow_message)
if match:
    sql_dict = match.groupdict()
    print(sql_dict)
[root@zijie ~]# python3 analyze_slowlog.py
{'Time': '2021-04-23T11:45:34.547941+08:00', 'user': 'sysbench', 'proxyHost': '[127.0.0.1] ', 'threadID': '215', 'queryTime': '0.000138', 'lockTime': '0.000039', 'rowsSent': '0', 'rowsExamined': '0', 'use': None, 'sqlTimestamp': '1619149534', 'sqlText': "INSERT INTO sbtest1 (id, k, c, pad) VALUES (49811, 49912, '10220485634-91999725679-19196059245-27016586998-15755374217-01375486173-63134319850-09341020024-22612796483-62654126985', '76715857161-08232266466-02982013956-69920229100-95612205979');\n"}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_梓杰_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值