clear_all_but_feeds.py 832 B

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