import_to_db.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """把现有 data/queries/demo.json + search_results.json 导入 data/app.db。
  2. 一次性迁移 / 重导用。run_id 用固定名(demo / search-demo),重导幂等覆盖。
  3. 用法:PYTHONPATH=. python scripts/import_to_db.py
  4. """
  5. from __future__ import annotations
  6. import json
  7. import time
  8. from pathlib import Path
  9. from acquisition import store
  10. ROOT = Path(__file__).resolve().parent.parent
  11. DEMO = ROOT / "data" / "queries" / "demo.json"
  12. SEARCH = ROOT / "data" / "queries" / "search_results.json"
  13. def main() -> None:
  14. ts = int(time.time())
  15. conn = store.connect()
  16. try:
  17. if DEMO.exists():
  18. demo = json.loads(DEMO.read_text("utf-8"))
  19. for key in ("tactic1", "tactic2", "tactic3", "tactic4"):
  20. t = demo.get(key) or {}
  21. items = t.get("items") or []
  22. if not items:
  23. continue
  24. n = store.insert_queries(conn, "demo", t.get("name", key), items, ts=ts)
  25. print(f"queries[{t.get('name', key)}]: {n} 条")
  26. if SEARCH.exists():
  27. recs = json.loads(SEARCH.read_text("utf-8"))
  28. n = store.insert_search_results(conn, "search-demo", recs, ts=ts)
  29. print(f"search_results: {n} 行({len(recs)} 条 query × 平台拍平)")
  30. print("runs:", [r["run_id"] for r in store.list_runs(conn)])
  31. finally:
  32. conn.close()
  33. if __name__ == "__main__":
  34. main()