如何使用regex在MySQL日志中获取查询SELECT

2024-09-27 21:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在python中使用regex解析mysql日志。但是结果没有出来,也没有错误。我想得到时间戳,只选择查询。以下是日志示例:

190410  7:55:29 32168488 Connect    cis_production@172.21.7.4 on cis_production
    32168488 Query  SET NAMES 'utf8'
    32168488 Query  SHOW FULL COLUMNS FROM `sysx_user`
    32168488 Query  SELECT *
FROM information_schema.referential_constraints AS rc
JOIN information_schema.key_column_usage AS kcu ON
kcu.constraint_schema = rc.constraint_schema AND
kcu.constraint_name = rc.constraint_name
WHERE rc.constraint_schema = database() AND kcu.table_schema = database()
AND rc.table_name = 'sysx_user' AND kcu.table_name = 'sysx_user'
    32168488 Query  SELECT * FROM `dimx_dim` WHERE user_id = 3060

这是我已经尝试过的正则表达式:

regex = re.compile(r'(\d{6}) (\d{2}:\d{2}:\d{2} [0-9]{8}) (.*?)(?=\d{8} \d{2}:\d{2}:\d{2} [0-9]{8} |$)', re.MULTILINE|re.DOTALL)

我只希望得到SELECT日志。不是整个日志。这是预期的结果:

[("190410  7:55:29 32168488 Connect cis_production@172.21.7.4 on",
  "SELECT *FROM information_schema.referential_constraints AS rc JOIN 
   information_schema.key_column_usage AS kcu ON kcu.constraint_schema = 
   rc.constraint_schema AND kcu.constraint_name = rc.constraint_name WHERE 
   rc.constraint_schema = database() AND kcu.table_schema = database() AND 
   rc.table_name = 'sysx_user' AND kcu.table_name = 'sysx_user'",
   " SELECT * FROM `dimx_dim` WHERE user_id = 3060")]

请帮帮我。非常感谢。你知道吗


Tags: andnamefrominformationschemaastablewhere

热门问题