# -*- coding: utf-8 -*- import io, sys, pymysql sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') conn = pymysql.connect(host='192.168.1.161', user='devgps', password='dev@2021GPS', database='zentao_dev_2026', charset='utf8mb4') cur = conn.cursor() def q(sql): cur.execute(sql); return cur.fetchall() prods = [r[0] for r in q("SELECT id FROM zt_product WHERE program=139")] prod_in = ','.join(map(str, prods)) stories = q(f"SELECT id FROM zt_story WHERE product IN ({prod_in}) AND releaseddate>='2026-06-01' AND releaseddate<'2026-07-01' AND deleted='0'") sids = [s[0] for s in stories] print(f"139产品={prods} 6月上线需求={len(sids)}个") sid_in = ','.join(map(str, sids)) or '0' r = q(f"SELECT COUNT(*), SUM(estimate) FROM zt_task WHERE story IN ({sid_in}) AND type='devel' AND deleted='0' AND status NOT IN ('cancel','closed')")[0] print(f"devel任务(排除cancel/closed): {r[0]}个 Σestimate={r[1]}") print("按状态分布:") for row in q(f"SELECT status, COUNT(*), IFNULL(SUM(estimate),0) FROM zt_task WHERE story IN ({sid_in}) AND type='devel' AND deleted='0' GROUP BY status"): print(" ", row) # 含所有状态 r2 = q(f"SELECT COUNT(*), SUM(estimate) FROM zt_task WHERE story IN ({sid_in}) AND type='devel' AND deleted='0'")[0] print(f"devel任务(全部状态): {r2[0]}个 Σestimate={r2[1]}")