【发布时间】:2021-06-03 19:16:57
【问题描述】:
我正在尝试解析用户(在一段时间内)在 PostgreSQL 数据库中执行的所有查询(通过查询 pg_stat_statements 表)并尝试创建用户使用哪些表运行的报告>选择或插入或删除查询。基本上运行 Select query, queryid, userid from pg_stat_state 之类的东西,然后解析每个查询以检查它是 Select 还是 Insert 或 Delete 查询并提取查询中的 table_Name。
我正在使用 sqlparse python 模块,但对它很陌生,所以需要帮助。 我可以通过以下方式获取表名:
import sqlparse
from sqlparse.sql import Where, Comparison, Parenthesis, Identifier
for tokens in sqlparse.parse(sql_statement)[0]:
if isinstance(tokens, Identifier):
print(str(tokens))
但不确定如何获取语句类型(选择/插入/删除)以及表名。此外,还需要将 COPY 语句合并为 Selects。
我尝试使用 psqlparse,但在网上没有看到太多关于此模块的信息/帮助。
请提出建议。
谢谢。
【问题讨论】:
标签: python python-3.x postgresql sql-parser