#!/usr/bin/env python3 """ init_rss_sources.py — 初始化 RSS 数据源的 MySQL 表和 source 记录 运行一次即可: python3 init_rss_sources.py """ import pymysql from common import MYSQL_CFG def init(): conn = pymysql.connect(**MYSQL_CFG) cur = conn.cursor() # 1. 插入 news_sources 记录(如不存在) sources = [ ("东方财富快讯", "eastmoney", "东方财富 7×24 快讯(RSS)"), ("同花顺快讯", "10jqka", "同花顺 7×24 快讯(RSS)"), ("雪球动态", "xueqiu", "雪球用户动态(RSS)"), ] for name, code, desc in sources: cur.execute( "INSERT IGNORE INTO news_sources (name, code, description, is_active) VALUES (%s, %s, %s, 1)", (name, code, desc), ) print(f" [source] {code}: {name} — 已注册") # 2. 创建 per-source 表 tables = { "news_10jqka": """ CREATE TABLE IF NOT EXISTS news_10jqka ( id BIGINT AUTO_INCREMENT PRIMARY KEY, source_news_id VARCHAR(128) NOT NULL, title VARCHAR(500) NOT NULL, content TEXT, url VARCHAR(500), published_at BIGINT, fetched_at DATETIME DEFAULT CURRENT_TIMESTAMP, importance INT DEFAULT 0, is_dup TINYINT DEFAULT 0, summary TEXT, tags JSON, category VARCHAR(50) DEFAULT 'general', UNIQUE KEY uq_sid (source_news_id), INDEX idx_pub (published_at), INDEX idx_imp (importance) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 """, "news_xueqiu": """ CREATE TABLE IF NOT EXISTS news_xueqiu ( id BIGINT AUTO_INCREMENT PRIMARY KEY, source_news_id VARCHAR(128) NOT NULL, title VARCHAR(500) NOT NULL, content TEXT, url VARCHAR(500), published_at BIGINT, fetched_at DATETIME DEFAULT CURRENT_TIMESTAMP, importance INT DEFAULT 0, is_dup TINYINT DEFAULT 0, summary TEXT, tags JSON, category VARCHAR(50) DEFAULT 'general', UNIQUE KEY uq_sid (source_news_id), INDEX idx_pub (published_at), INDEX idx_imp (importance) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 """, } for table_name, ddl in tables.items(): cur.execute(ddl) print(f" [table] {table_name} — 已创建/确认") conn.commit() cur.close() conn.close() print("\n初始化完成!RSS 数据源已就绪。") if __name__ == "__main__": init()