check_users.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """Check users table — all 4 fields (username, phone, password_hash, token)."""
  2. import sys
  3. sys.path.insert(0, r"D:\传奇\cq2_sdk\src")
  4. from cq2_sdk.env_loader import load_env
  5. load_env(r"D:\传奇\cq2_sdk\.env")
  6. from cq2_sdk.store import UserStore, connection
  7. with connection() as conn:
  8. with conn.cursor() as cur:
  9. cur.execute(
  10. "SELECT id, username, phone, "
  11. "IFNULL(password_hash, '<NULL>') AS pwd, "
  12. "IFNULL(LEFT(token, 30), '<NULL>') AS tok, "
  13. "last_login_at "
  14. "FROM users ORDER BY id"
  15. )
  16. rows = cur.fetchall()
  17. print(f"--- users in MySQL ({len(rows)} total) ---")
  18. if not rows:
  19. print(" (empty table -- A1 has NEVER been run)")
  20. for r in rows:
  21. # cursorclass=DictCursor in get_connection, so r is a dict
  22. print(
  23. f" id={r['id']:>2} "
  24. f"username={r['username']!r:<25} "
  25. f"phone={r['phone']!r:<15} "
  26. f"password_hash={r['pwd']!r:<18} "
  27. f"token={r['tok']!r:<35} "
  28. f"last_login={r['last_login_at']}"
  29. )
  30. # Specifically check longwu988
  31. u = UserStore(conn).get_by_username("longwu988")
  32. print()
  33. if u is None:
  34. print("==> ANSWER: longwu988 NOT in DB. A1 has NOT been run successfully.")
  35. elif not u.token:
  36. print(f"==> ANSWER: longwu988 exists (id={u.id}) but has NO token. A1 partially ran (failed before saving).")
  37. else:
  38. print(
  39. f"==> ANSWER: A1 row exists. longwu988 id={u.id}, "
  40. f"password_hash={u.password_hash!r}, "
  41. f"token={u.token[:24]}..., last_login={u.last_login_at}"
  42. )