📅  最后修改于: 2023-12-03 15:07:05.419000             🧑  作者: Mango
本程序是为了在数据库中进行关系查询及评估,方便用户对于数据库中的关系进行分析和优化。
用户需要输入以下内容:
程序会根据用户输入的信息,在数据库中进行查询或评估。
查询操作将返回符合条件的结果,评估操作将返回如下信息:
以下是一个示例代码片段,可以作为参考:
import psycopg2
import pandas as pd
# 用户输入信息
operation_type = input("请输入操作类型(查询/评估):")
db_name = input("请输入数据库名称:")
table_name = input("请输入数据表名称:")
query_condition = input("请输入查询条件:")
# 连接数据库
conn = psycopg2.connect(database=db_name, user="postgres", password="password", host="127.0.0.1", port="5432")
cur = conn.cursor()
# 查询操作
if operation_type == "查询":
cur.execute(f"SELECT * FROM {table_name} WHERE {query_condition}")
rows = cur.fetchall()
df = pd.DataFrame(rows, columns=[desc[0] for desc in cur.description])
print(df.to_markdown())
else:
# 评估操作
cur.execute(f"SELECT pg_total_relation_size('{table_name}')")
table_size = cur.fetchone()[0]
print(f"数据表大小:{table_size/1024/1024}MB")
cur.execute(f"SELECT relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch \
FROM pg_stat_user_indexes WHERE relname='{table_name}'")
rows = cur.fetchall()
df = pd.DataFrame(rows, columns=["索引名称", "被扫描次数", "获取元组数", "抓取元组数"])
print(df.to_markdown())
cur.execute(f"EXPLAIN ANALYZE SELECT * FROM {table_name} WHERE {query_condition}")
rows = cur.fetchall()
df = pd.DataFrame(rows, columns=["执行计划"])
print(df.to_markdown())