数据存储模块
DigestDatabase - SQLite 数据库管理
📋 模块概述
数据存储模块使用 SQLite 轻量级数据库管理文章数据,支持批量操作、索引优化和数据归档。
核心文件
core/database.py- 数据库操作类data/digest_db.sqlite- SQLite 数据库文件
🗄️ 数据表结构
articles 表
CREATE TABLE articles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT UNIQUE NOT NULL,
title TEXT NOT NULL,
title_zh TEXT,
title_en TEXT,
content TEXT,
summary_zh TEXT,
summary_en TEXT,
source TEXT,
date TEXT NOT NULL,
popularity INTEGER DEFAULT 0,
attention INTEGER DEFAULT 0,
category TEXT DEFAULT 'ai_industry',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_deleted INTEGER DEFAULT 0,
deleted_at TIMESTAMP
)
索引优化
CREATE INDEX idx_date ON articles(date);
CREATE INDEX idx_url ON articles(url);
CREATE INDEX idx_popularity ON articles(popularity);
CREATE INDEX idx_attention ON articles(attention);
CREATE INDEX idx_category ON articles(category);
🎯 主要功能
1. 批量插入
批量插入文章,性能提升 2-3 倍:
success_count, skipped_count = db.insert_articles_batch(articles)
# 自动去重、验证、批量插入
2. 查询操作
# 获取所有文章
articles = db.get_all_articles(limit=100)
# 按日期查询
articles = db.get_articles_by_date("2026年05月21日")
# 获取文章总数
count = db.get_article_count()
3. 内容保留期限
自动清理过期内容:
# 软删除超过30天的文章
deleted_count = db.soft_delete_articles_by_retention(30)
# 永久删除超过90天的已删除文章
permanent_count = db.permanent_delete_expired_articles()
⚡ 性能优化
| 优化项 | 方法 | 效果 |
|---|---|---|
| 批量插入 | executemany() | 性能提升 2-3倍 |
| 索引优化 | 多字段索引 | 查询速度提升 10倍+ |
| 连接池 | 上下文管理器 | 避免连接泄漏 |
| 事务管理 | 自动提交/回滚 | 数据一致性保证 |