云
2 天以前 1f6a660180d4e6fccd1ec83a27b79ea93a121817
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import sys,json
from pathlib import Path
P=Path(__file__).parent
sys.stdout.reconfigure(encoding='utf8')
sys.path.insert(0,str(P.parent/'iqc-import-20261012/deps'))
import pymysql
def connect(password):
 return pymysql.connect(host='36.213.150.237',port=10000,user='root',password=password,database='mom-hm',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor,autocommit=False,connect_timeout=15,read_timeout=120)
def encode(x):return json.dumps(x,ensure_ascii=False,default=str,sort_keys=True)
TABLES=['crm_customer','crm_business','crm_sale_quotation','crm_contract','crm_receivable','crm_receivable_plan','crm_invoice','erp_sale_order','mes_pro_mps','mes_pro_work_order','mes_pro_task','mes_pro_feedback','mes_qc_iqc','mes_qc_ipqc','mes_qc_oqc','mes_wm_sales_notice','mes_wm_product_sales','mes_wm_product_produce','mes_wm_product_issue','mes_wm_misc_receipt','mes_md_item','mes_pro_process','mes_pro_route','mes_md_workstation','mes_pd_process_param','mes_pd_process_param_template','mes_dv_repair','mes_dv_check_record','mes_dv_mainten_record']
TABLES+=['mdm_item','mes_md_product_bom']
if __name__=='__main__':
 c=connect(sys.stdin.readline().strip());s={}
 with c.cursor() as q:
  q.execute("SET time_zone='+08:00'")
  q.execute('SELECT DATABASE() db,NOW() now');s['state']=q.fetchone()
  q.execute('SHOW COLUMNS FROM system_operate_log');s['log_schema']=q.fetchall()
  q.execute('SELECT * FROM system_operate_log ORDER BY id');s['logs']=q.fetchall()
  q.execute('SELECT id,nickname,status,dept_id,tenant_id FROM system_users WHERE deleted=0');s['users']=q.fetchall()
  q.execute('SELECT u.id,u.nickname,r.id role_id,r.name role_name FROM system_users u JOIN system_user_role ur ON ur.user_id=u.id JOIN system_role r ON r.id=ur.role_id WHERE u.deleted=0 AND u.status=0 AND ur.deleted=0 AND r.deleted=0 AND r.status=0');s['roles']=q.fetchall()
  q.execute("SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA=DATABASE()");available={x['TABLE_NAME'] for x in q.fetchall()}
  s['tables']={}
  for t in TABLES:
   if t not in available:continue
   q.execute('SHOW COLUMNS FROM `'+t+'`');cols=q.fetchall()
   q.execute('SELECT * FROM `'+t+'` WHERE deleted=0 ORDER BY id');rows=q.fetchall()
   s['tables'][t]={'columns':cols,'rows':rows}
   print(t,len(rows),','.join(x['Field'] for x in cols))
 P.mkdir(exist_ok=True)
 (P/'snapshot.json').write_text(encode(s),encoding='utf8')
 print('STATE',encode(s['state']),'LOGS',len(s['logs']))
 print('ROLE MEMBERS',encode(s['roles']))
 c.close()