Files
drawlogo/_design-test/kg-probe.py
T

65 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 只读探测甄房知识图谱库(zhenos_kg)——不做任何写入
# 用法: python _design-test/kg-probe.py
import os, re, sys, pymysql
ZF = r'e:\KF_7\ZhenOS-ZF'
env = {}
with open(os.path.join(ZF, '.env.local'), encoding='utf-8') as f:
for ln in f:
m = re.match(r'^\s*([A-Z_][A-Z0-9_]*)\s*=\s*(.*?)\s*$', ln)
if m:
env[m.group(1)] = m.group(2).strip().strip('"').strip("'")
user = env.get('DB_USERNAME')
pwd = env.get('DB_PASSWORD')
if not user or not pwd:
sys.exit('未在 .env.local 取到 DB_USERNAME / DB_PASSWORD')
HOST = 'rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com'
PORT = 3306
try:
conn = pymysql.connect(host=HOST, port=PORT, user=user, password=pwd, charset='utf8mb4',
connect_timeout=12, read_timeout=30)
except Exception as e:
sys.exit('连接失败(可能是 RDS IP 白名单未放行本机):%s' % e)
cur = conn.cursor()
cur.execute("SHOW DATABASES")
dbs = [r[0] for r in cur.fetchall()]
print('可见数据库:', ', '.join(dbs))
print('zhenos_kg 存在:', 'zhenos_kg' in dbs)
if 'zhenos_kg' not in dbs:
conn.close(); sys.exit(0)
cur.execute("USE zhenos_kg")
cur.execute("SHOW TABLES")
tabs = [r[0] for r in cur.fetchall()]
print('表:', ', '.join(tabs))
for t in ('kg_entities', 'kg_relations', 'dev_knowledge'):
if t in tabs:
cur.execute("SELECT COUNT(*) FROM `%s`" % t)
print(' %-16s %d 行' % (t, cur.fetchone()[0]))
if 'kg_entities' in tabs:
cur.execute("SELECT entity_type, COUNT(*) FROM kg_entities GROUP BY entity_type ORDER BY 2 DESC")
print('实体类型分布:', ', '.join('%s=%d' % r for r in cur.fetchall()))
cur.execute("SELECT COUNT(*) FROM kg_entities WHERE entity_name LIKE 'ZhenosSH:%%'")
print("前缀 ZhenosSH: 实体数:", cur.fetchone()[0])
cur.execute("SELECT COUNT(*) FROM kg_entities WHERE entity_name LIKE 'XiaoHu:%%'")
print("前缀 XiaoHu: 实体数(应为 0):", cur.fetchone()[0])
cur.execute("SELECT entity_name FROM kg_entities WHERE entity_name LIKE '%%ui%%' OR entity_name LIKE '%%样式%%' OR entity_name LIKE '%%主题%%' LIMIT 15")
rows = cur.fetchall()
print('与 UI/样式/主题 相关的已有实体:')
for r in rows:
print(' ', r[0])
if not rows:
print(' (无)')
if 'dev_knowledge' in tabs:
cur.execute("SHOW COLUMNS FROM dev_knowledge")
print('dev_knowledge 列:', ', '.join(c[0] for c in cur.fetchall()))
conn.close()
print('\n只读探测完成,未做任何写入。')