| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from __future__ import annotations
- from typing import Any, Dict, List
- from dotenv import find_dotenv, load_dotenv
- from examples_how.db_utils.errors import MySQLBaseException
- from examples_how.db_utils.mysql_db import MySQLDB
- from examples_how.db_utils.mysql_manager import MySQLClientManager
- def _print_rows_preview(title: str, rows: List[Dict[str, Any]], preview: int = 5) -> None:
- print(f"\n=== {title} ===")
- print(f"total: {len(rows)}")
- for i, r in enumerate(rows[:preview], start=1):
- print(f"[{i}] {r}")
- if len(rows) > preview:
- print(f"... (show first {preview} rows)")
- def main() -> None:
- dotenv_path = find_dotenv()
- if dotenv_path:
- load_dotenv(dotenv_path)
- # 从 .env 的 MYSQL_SOURCES_INFO 自动构建多 source 的 manager
- manager = MySQLClientManager.from_env_sources_info(
- env_var="MYSQL_SOURCES_INFO", dotenv_path=dotenv_path, allow_fallback_single_source=False
- )
- db_default = MySQLDB(manager=manager, source="default")
- db_pattern = MySQLDB(manager=manager, source="pattern")
- # 1) default: post 前 10 条
- post_rows = db_default.select("post", columns="*", limit=10)
- _print_rows_preview("default.post (first 10)", post_rows, preview=10)
- # 2) pattern: topic_pattern_mining_config 全部
- configs_rows = db_pattern.select("topic_pattern_mining_config", columns="*")
- _print_rows_preview(
- "pattern.topic_pattern_mining_config (all, preview)",
- configs_rows,
- preview=5,
- )
- # 3) pattern: topic_build_log 一条
- build_log_row = db_pattern.select_one("topic_build_log", columns="*", where="")
- print("\n=== pattern.topic_build_log (one) ===")
- print(build_log_row)
- if __name__ == "__main__":
- try:
- main()
- except MySQLBaseException as e:
- print(f"MySQL 操作失败: {e.message}")
- if getattr(e, "original_error", None):
- print(f"original_error: {e.original_error}")
- except Exception as e:
- print(f"脚本运行失败: {e}")
|