clear_all_but_feeds.py 884 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env python3
  2. """Clear all news data but keep feed_state rows intact."""
  3. import os
  4. import sqlite3
  5. import sys
  6. from pathlib import Path
  7. DB_PATH = Path(os.getenv("NEWS_MCP_DB_PATH", str(Path(__file__).resolve().parent.parent / "data" / "news.sqlite")))
  8. if len(sys.argv) > 1:
  9. DB_PATH = Path(sys.argv[1])
  10. if not DB_PATH.exists():
  11. print(f"DB not found: {DB_PATH}", file=sys.stderr)
  12. sys.exit(1)
  13. TABLES_TO_CLEAR = [
  14. "cluster_entities",
  15. "cluster_keywords",
  16. "entity_metadata",
  17. "clusters",
  18. "meta",
  19. ]
  20. conn = sqlite3.connect(str(DB_PATH))
  21. for table in TABLES_TO_CLEAR:
  22. conn.execute(f"DELETE FROM {table}")
  23. conn.commit()
  24. # Report remaining feed_state count
  25. cur = conn.execute("SELECT COUNT(*) FROM feed_state")
  26. feed_count = cur.fetchone()[0]
  27. conn.close()
  28. print(f"Done. Cleared: {', '.join(TABLES_TO_CLEAR)}. feed_state rows kept: {feed_count}")