浏览代码

add script: clear all news data but keep feed_state rows

Lukas Goldschmidt 1 周之前
父节点
当前提交
14dbabaad7
共有 1 个文件被更改,包括 35 次插入0 次删除
  1. 35 0
      scripts/clear_all_but_feeds.py

+ 35 - 0
scripts/clear_all_but_feeds.py

@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+"""Clear all news data but keep feed_state rows intact."""
+
+import sqlite3
+import sys
+from pathlib import Path
+
+DB_PATH = Path(__file__).resolve().parent.parent / "data" / "news.sqlite"
+
+if len(sys.argv) > 1:
+    DB_PATH = Path(sys.argv[1])
+
+if not DB_PATH.exists():
+    print(f"DB not found: {DB_PATH}", file=sys.stderr)
+    sys.exit(1)
+
+TABLES_TO_CLEAR = [
+    "cluster_entities",
+    "cluster_keywords",
+    "entity_metadata",
+    "clusters",
+    "meta",
+]
+
+conn = sqlite3.connect(str(DB_PATH))
+for table in TABLES_TO_CLEAR:
+    conn.execute(f"DELETE FROM {table}")
+conn.commit()
+
+# Report remaining feed_state count
+cur = conn.execute("SELECT COUNT(*) FROM feed_state")
+feed_count = cur.fetchone()[0]
+conn.close()
+
+print(f"Done. Cleared: {', '.join(TABLES_TO_CLEAR)}. feed_state rows kept: {feed_count}")