mysql_test.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from __future__ import annotations
  2. from typing import Any, Dict, List
  3. from dotenv import find_dotenv, load_dotenv
  4. from examples_how.db_utils.errors import MySQLBaseException
  5. from examples_how.db_utils.mysql_db import MySQLDB
  6. from examples_how.db_utils.mysql_manager import MySQLClientManager
  7. def _print_rows_preview(title: str, rows: List[Dict[str, Any]], preview: int = 5) -> None:
  8. print(f"\n=== {title} ===")
  9. print(f"total: {len(rows)}")
  10. for i, r in enumerate(rows[:preview], start=1):
  11. print(f"[{i}] {r}")
  12. if len(rows) > preview:
  13. print(f"... (show first {preview} rows)")
  14. def main() -> None:
  15. dotenv_path = find_dotenv()
  16. if dotenv_path:
  17. load_dotenv(dotenv_path)
  18. # 从 .env 的 MYSQL_SOURCES_INFO 自动构建多 source 的 manager
  19. manager = MySQLClientManager.from_env_sources_info(
  20. env_var="MYSQL_SOURCES_INFO", dotenv_path=dotenv_path, allow_fallback_single_source=False
  21. )
  22. db_default = MySQLDB(manager=manager, source="default")
  23. db_pattern = MySQLDB(manager=manager, source="pattern")
  24. # 1) default: post 前 10 条
  25. post_rows = db_default.select("post", columns="*", limit=10)
  26. _print_rows_preview("default.post (first 10)", post_rows, preview=10)
  27. # 2) pattern: topic_pattern_mining_config 全部
  28. configs_rows = db_pattern.select("topic_pattern_mining_config", columns="*")
  29. _print_rows_preview(
  30. "pattern.topic_pattern_mining_config (all, preview)",
  31. configs_rows,
  32. preview=5,
  33. )
  34. # 3) pattern: topic_build_log 一条
  35. build_log_row = db_pattern.select_one("topic_build_log", columns="*", where="")
  36. print("\n=== pattern.topic_build_log (one) ===")
  37. print(build_log_row)
  38. if __name__ == "__main__":
  39. try:
  40. main()
  41. except MySQLBaseException as e:
  42. print(f"MySQL 操作失败: {e.message}")
  43. if getattr(e, "original_error", None):
  44. print(f"original_error: {e.original_error}")
  45. except Exception as e:
  46. print(f"脚本运行失败: {e}")