publish_platform(发布平台配置表)和publish_log(发布日志表)。存储平台配置和操作日志。
publish_platform表要能安全存储各平台的API密钥等敏感配置,publish_log表要能详细记录每次发布的结果便于排查问题。考虑到用户可能在不同时间创建这些表,我应该确保外键关系正确,并添加一些实用的索引来提升查询性能。
让我思考一下表结构细节。publish_platform表应该包含平台名称、是否启用标志,还有配置字段——用JSON类型很适合存储不同平台各异的API参数。publish_log表需要关联任务和平台,记录状态、原始响应和时间戳。为了保证数据完整性和查询效率,应该添加适当的外键约束和索引。
我还应该提供一些使用说明,比如如何安全地管理API密钥,如何查询日志来监控发布状态。用户可能在实际使用中会遇到平台API变更或发布失败的情况,这些表的设计要便于运维管理。
------------------------
以下是完整的 publish_platform 和 publish_log 表的创建 SQL 语句。它们与之前创建的 task 表共同构成了您内容自动化系统的核心数据模型。
📑 完整的建表 SQL 语句
在您的 MySQL 命令行中(使用 sudo mysql 登录后,并已切换到 content_hub 数据库),请按顺序执行以下语句:
-- 1. 创建“发布平台配置表”-- 此表用于安全存储各个目标平台(如Joomla、微信公众号)的API访问密钥和配置CREATE TABLE publish_platform ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL UNIQUE COMMENT '平台唯一标识,如:joomla, wechat_mp, xiaohongshu, toutiao, weibo', display_name VARCHAR(100) COMMENT '平台显示名称,如:Joomla网站、微信公众号', -- 使用JSON类型灵活存储不同平台所需的各异配置参数,如URL、Token、密钥等 config JSON COMMENT '存储API URL、密钥、访问令牌等JSON化配置', is_active BOOLEAN DEFAULT TRUE COMMENT '该平台配置是否启用', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_active (is_active) -- 为启用状态建立索引,便于快速查询) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='发布平台配置表';
-- 2. 创建“发布日志表”-- 此表用于记录每一次向各个平台发布内容的详细结果,是排查问题的重要依据CREATE TABLE publish_log ( id INT PRIMARY KEY AUTO_INCREMENT, task_id INT NOT NULL COMMENT '关联的任务ID', platform_id INT NOT NULL COMMENT '关联的发布平台ID', status ENUM('success', 'failed') NOT NULL COMMENT '发布状态', message VARCHAR(500) COMMENT '简要状态信息或错误摘要', response TEXT COMMENT '平台返回的原始响应全文,用于深度调试', published_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '实际发布时间', -- 定义外键约束,确保数据的一致性和完整性 FOREIGN KEY (task_id) REFERENCES task(id) ON DELETE CASCADE, FOREIGN KEY (platform_id) REFERENCES publish_platform(id) ON DELETE CASCADE, -- 建立复合索引,便于按任务或平台查询历史记录 INDEX idx_task_platform (task_id, platform_id), INDEX idx_published_at (published_at)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='内容发布日志表';
💡 核心字段说明与使用建议
为了帮助您更好地理解和使用这两张表,以下是一些关键点:
| 表名 | 字段 | 说明与使用建议 |
|---|---|---|
| publish_platform | name | 核心字段。在您的代码中,将使用此名称(如 joomla)来定位配置。 |
| config (JSON) | 安全提示:此字段将存储API密钥等敏感信息。在生产环境中,务必通过环境变量或密钥管理服务传入,而非硬编码在数据库初始化脚本中。示例值:{"api_url": "https://example.com/api", "api_key": "your_secret_key_here"} | |
| is_active | 方便您临时关闭向某个平台的发布,而无需删除配置。 | |
| publish_log | status, response | 排错关键。发布失败时,response 字段存储的原始错误信息至关重要。 |
| 外键 (task_id, platform_id) | 确保每条日志都对应一个存在的任务和平台配置。ON DELETE CASCADE 表示当主记录被删除时,日志也自动删除。 |
🚀 后续操作建议
- 插入测试平台配置:创建表后,您可以插入一条用于测试的 Joomla 平台配置(请替换为您的实际信息):
INSERT INTO publish_platform (name, display_name, config) VALUES('joomla', 'Joomla网站', '{"api_url": "https://你的网站/api", "api_key": "你的joomla_api密钥"}');
验证表结构:执行以下命令,确认三张表均已成功创建:
USE content_hub;SHOW TABLES;DESCRIBE publish_platform;
完成数据库的搭建后,您的系统数据层就准备好了。接下来可以回到 Python 环境,继续编写连接数据库、定义 SQLAlchemy 模型和实现核心任务逻辑的代码。
也可为其他平台(如微信公众号、小红书)设计 config 字段的JSON结构,或开始编写插入和查询这些表的Python代码。