import pymysql,pathlib,re,json def connect(): env={} for name in ['base.env','stat-writer.env']: for line in pathlib.Path('/opt/lingniu-go-native/env/'+name).read_text().splitlines(): if '=' in line and not line.startswith('#'): k,v=line.split('=',1);env[k]=v.strip().strip(chr(34)).strip(chr(39)) m=re.fullmatch(r'([^:]+):(.*?)@tcp\(([^:]+):(\d+)\)/([^?]+).*',env['MYSQL_DSN']) return pymysql.connect(user=m[1],password=m[2],host=m[3],port=int(m[4]),database=m[5],charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor,autocommit=False) if __name__=='__main__': c=connect() with c.cursor() as q: q.execute('START TRANSACTION READ ONLY') for sql in ["SELECT DATABASE() AS db, VERSION() AS version", "SELECT table_name,engine,table_rows,ROUND((data_length+index_length)/1024/1024,1) AS mb FROM information_schema.tables WHERE table_schema=DATABASE() ORDER BY data_length DESC", "SELECT protocol,source_ip,COUNT(*) AS n,COUNT(DISTINCT vin) AS vins FROM vehicle_daily_mileage_source WHERE source_ip IN ('legacy-mysql.lingniu-prod','manual-lingniu-prod-day-mileage') GROUP BY protocol,source_ip"]: q.execute(sql);print(json.dumps(q.fetchall(),default=str)) c.rollback();c.close()