fix: align zhihu and douyin postgres persistence by starCarlos · Pull Request #845 · NanmiCoder/MediaCrawler
fix: 对齐 zhihu 和 douyin 的 PostgreSQL 持久化兼容性
描述
变更概述
这个 PR 修复了 Zhihu 和 Douyin 在 PostgreSQL 场景下的入库兼容问题。
问题背景
1. Zhihu 入库失败
Zhihu 抓取结果中的时间字段是整数类型,但当前 ORM / PostgreSQL 表结构中对应字段是字符串或文本类型,例如:
- created_time
- updated_time
- publish_time
这会导致 asyncpg 在写入内容和评论时直接报错。
2. Douyin 入库失败
Douyin 的抓取结果与 PostgreSQL 兼容 schema 之间存在字段类型不一致问题,主要包括:
- aweme_id
- comment_id
- parent_comment_id
- 部分 user/id 字段
- like_count
这类问题会导致两种错误:
- 查询时报错:character varying = bigint
- 插入时报错:expected str, got int
本次修改内容
- 在 Zhihu 入库前,将时间字段统一转为字符串
- 将 Douyin ORM 中与项目 PostgreSQL schema 不一致的 ID 字段调整为字符串类型
- 在 Douyin 入库前,对相关 ID / count 字段做字符串归一化
- 修改 Douyin store 层的查询逻辑,避免再强制把 aweme_id / comment_id 转成整数
修改文件
- database/models.py
- store/douyin/init.py
- store/douyin/_store_impl.py
- store/zhihu/init.py
验证情况
在基于 PostgreSQL 的 BettaFish 集成环境中已验证:
- Zhihu 内容入库正常
- Zhihu 评论入库正常
- Douyin 内容入库正常
- Douyin 评论入库逻辑已通过实际数据库写入验证
说明
这个 PR 只包含持久化兼容性修复,不包含本地测试日志、临时配置和实验目录。