dump_home_schema.py 1.6 KB

123456789101112131415161718192021222324252627282930313233
  1. # -*- coding: utf-8 -*-
  2. """确认首页统计涉及的表字段"""
  3. import re
  4. import pymysql
  5. from pathlib import Path
  6. yml = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml")
  7. pwd = re.findall(r"password:\s*(.+)", yml.read_text(encoding="utf-8"))[0].strip().strip('"\'')
  8. conn = pymysql.connect(host="192.168.1.177", port=3306, user="root", password=pwd, database="shop")
  9. cur = conn.cursor()
  10. for t in ("yoshop_order", "yoshop_user", "yoshop_order_refund"):
  11. cur.execute(
  12. "SELECT column_name, column_type FROM information_schema.columns "
  13. "WHERE table_schema='shop' AND table_name=%s ORDER BY ordinal_position", (t,))
  14. cols = cur.fetchall()
  15. print("=" * 15, t, f"({len(cols)} 字段)")
  16. print(" ", ", ".join(c for c, _ in cols))
  17. # 行数与状态分布,便于校验统计口径
  18. if t == "yoshop_order":
  19. cur.execute("SELECT COUNT(*), SUM(is_delete=0) FROM yoshop_order")
  20. print(" 行数/未删除:", cur.fetchone())
  21. cur.execute("SELECT pay_status, order_status, COUNT(*) FROM yoshop_order WHERE is_delete=0 GROUP BY pay_status, order_status")
  22. print(" pay_status×order_status:", cur.fetchall())
  23. if t == "yoshop_user":
  24. cur.execute("SELECT COUNT(*), SUM(is_delete=0), SUM(pay_money>0) FROM yoshop_user")
  25. print(" 行数/未删除/已消费:", cur.fetchone())
  26. if t == "yoshop_order_refund":
  27. cur.execute("SELECT status, COUNT(*) FROM yoshop_order_refund GROUP BY status")
  28. print(" status 分布:", cur.fetchall())
  29. conn.close()