Support us and view this ad

可选:点击以支持我们的网站

免费文章

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_platformname核心字段。在您的代码中,将使用此名称(如 joomla)来定位配置。
 config (JSON)安全提示:此字段将存储API密钥等敏感信息。在生产环境中,务必通过环境变量或密钥管理服务传入,而非硬编码在数据库初始化脚本中。示例值:{"api_url": "https://example.com/api", "api_key": "your_secret_key_here"}
 is_active方便您临时关闭向某个平台的发布,而无需删除配置。
publish_logstatus, response排错关键。发布失败时,response 字段存储的原始错误信息至关重要。
 外键 (task_id, platform_id)确保每条日志都对应一个存在的任务和平台配置。ON DELETE CASCADE 表示当主记录被删除时,日志也自动删除。

🚀 后续操作建议

  1. 插入测试平台配置:创建表后,您可以插入一条用于测试的 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代码。