61 lines
2.4 KiB
Python
61 lines
2.4 KiB
Python
# 读取 zhenos_kg 的三张表结构 + 既有样本,供生成符合约定的同步 SQL
|
|
# 只读,不写入
|
|
# 用法: python _design-test/kg-schema.py
|
|
import os, re, 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("'")
|
|
|
|
conn = pymysql.connect(host='rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com', port=3306,
|
|
user=env['DB_USERNAME'], password=env['DB_PASSWORD'],
|
|
charset='utf8mb4', connect_timeout=12)
|
|
cur = conn.cursor()
|
|
cur.execute("USE zhenos_kg")
|
|
|
|
for t in ('kg_entities', 'kg_relations', 'dev_knowledge'):
|
|
cur.execute("SHOW CREATE TABLE `%s`" % t)
|
|
print('=' * 70)
|
|
print(cur.fetchone()[1])
|
|
|
|
cur.execute("SELECT * FROM kg_entities WHERE entity_name='ZhenosSH:ruoyi-ui'")
|
|
cur.execute("SHOW COLUMNS FROM kg_entities")
|
|
cols = [c[0] for c in cur.fetchall()]
|
|
cur.execute("SELECT * FROM kg_entities WHERE entity_name='ZhenosSH:ruoyi-ui'")
|
|
row = cur.fetchone()
|
|
print('=' * 70)
|
|
print('样本实体 ZhenosSH:ruoyi-ui:')
|
|
for c, v in zip(cols, row):
|
|
s = str(v)
|
|
print(' %-20s %s' % (c, s[:300]))
|
|
|
|
cur.execute("SELECT * FROM kg_entities WHERE entity_type='ConfigFile' LIMIT 2")
|
|
print('-' * 70)
|
|
for r in cur.fetchall():
|
|
print(' ConfigFile 样本:', dict(zip(cols, [str(x)[:80] for x in r])))
|
|
|
|
cur.execute("SHOW COLUMNS FROM kg_relations")
|
|
rcols = [c[0] for c in cur.fetchall()]
|
|
cur.execute("SELECT * FROM kg_relations WHERE source_name LIKE 'ZhenosSH:ruoyi-ui%%' LIMIT 4")
|
|
print('-' * 70)
|
|
print('ruoyi-ui 的关系样本:')
|
|
for r in cur.fetchall():
|
|
print(' ', dict(zip(rcols, [str(x)[:60] for x in r])))
|
|
|
|
cur.execute("SHOW COLUMNS FROM dev_knowledge")
|
|
kcols = [c[0] for c in cur.fetchall()]
|
|
cur.execute("SELECT type,title,tags,entity_type,entity_name,module,priority,status,source FROM dev_knowledge WHERE type='pitfall' LIMIT 2")
|
|
print('-' * 70)
|
|
print('dev_knowledge pitfall 样本:')
|
|
for r in cur.fetchall():
|
|
print(' ', dict(zip(['type','title','tags','entity_type','entity_name','module','priority','status','source'],
|
|
[str(x)[:90] for x in r])))
|
|
cur.execute("SELECT DISTINCT type FROM dev_knowledge")
|
|
print(' dev_knowledge 已有 type:', [r[0] for r in cur.fetchall()])
|
|
|
|
conn.close()
|