gaoluyang
6 天以前 e40a608ef9bf51db294d8eefada6a8e2e80cebca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys,json,re
from pathlib import Path
P=Path(__file__).parent
sys.path.insert(0,str(P.parent/'iqc-import-20261012/deps'))
import pymysql
c=pymysql.connect(host='36.213.150.237',port=10000,user='root',password=sys.stdin.readline().strip(),database='mom-hm',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
s={}
with c.cursor() as q:
 q.execute("SELECT * FROM system_operate_log WHERE trace_id LIKE 'BF-META-V1:%' ORDER BY id");s['logs']=q.fetchall()
 q.execute('SELECT id,username,nickname,status,dept_id FROM system_users WHERE deleted=0');s['users']=q.fetchall()
 tables={json.loads(r['extra'])['source_table'] for r in s['logs']}
 for t in sorted(tables):
  q.execute('SHOW FULL COLUMNS FROM `'+t+'`');cols=q.fetchall()
  selected=[r for r in cols if re.search('user|person|owner|inspect|check|audit|operator|sales|sign|creat|updat|time|date|^id$|^name$|^code$|^no$',r['Field'],re.I)]
  ids=[r['biz_id'] for r in s['logs'] if json.loads(r['extra'])['source_table']==t]
  q.execute('SELECT '+','.join('`'+r['Field']+'`' for r in selected)+' FROM `'+t+'` WHERE id IN ('+','.join('%s' for _ in ids)+') AND deleted=0',ids)
  s[t]={'columns':selected,'rows':q.fetchall()}
  print(t,[(r['Field'],r['Comment']) for r in selected])
  print(json.dumps(s[t]['rows'][:2],ensure_ascii=False,default=str))
(P/'before-log-business-actors.json').write_text(json.dumps(s,ensure_ascii=False,default=str,indent=2),encoding='utf8')
c.close()