当前位置: 首页 > news >正文

python导入redis json数据,通过接口的方式

python导入redis json数据,通过接口的方式

python导入redis json数据,通过接口的方式

需求背景:
按这个请求格式: https://you ip/apigateway/cmsServer/console/article
POST请求
{"title":"test221","identifier":"test222","description":"test223","content":"<p>test224</p>","type":"scooter"}
数据来源redis_export.json,生成python脚本,可以直接导入
需要带上请求头:
authorization:

python脚本代码:

import json
import requests
import sys# 配置参数
CMS_API_ENDPOINT = "https://you ip/apigateway/cmsServer/console/article"
AUTH_TOKEN = "you token header params"
REDIS_JSON_FILE = "redis_export.json"  # 请确保文件在当前目录或修改为实际路径,从redis导出的数据json文件def import_articles_from_redis_json():"""从 Redis 导出的 JSON 文件中读取文章数据,并导入到 CMS 系统"""try:# 1. 读取并解析 Redis 导出的 JSON 文件with open(REDIS_JSON_FILE, 'r', encoding='utf-8') as f:redis_data = json.load(f)print(f"成功读取 {REDIS_JSON_FILE},共找到 {len(redis_data)} 条数据")# 2. 设置请求头(包含认证Token)headers = {"Content-Type": "application/json","Authorization": AUTH_TOKEN}# 3. 遍历所有数据,筛选出文章数据并构建请求imported_count = 0failed_count = 0for key, value in redis_data.items():try:# 只处理文章数据(根据 key 模式判断)if key.startswith("test:cmsServer:article:"):# 解析嵌套的 JSON 字符串article_data = json.loads(value)# 构建 API 请求体payload = {"title": article_data.get("title", ""),"identifier": article_data.get("identifier", ""),"description": article_data.get("description", ""),"content": article_data.get("htmlContent", ""),"type": article_data.get("type", "scooter")  # 默认为 scooter 类型
                    }# 检查必需字段if not payload["title"] or not payload["identifier"]:print(f"⚠️  跳过: {key} - 缺少标题或标识符")continue# 发送 POST 请求print(f"\n正在导入文章: {payload['title']} (标识符: {payload['identifier']})")print(f"  Type: {payload['type']}")print(f"  描述: {payload['description'][:50]}..." if payload['description'] else "  描述: 空")response = requests.post(CMS_API_ENDPOINT,json=payload,headers=headers)# 检查响应print(f"  HTTP状态码: {response.status_code}")if response.status_code == 200:result = response.json()print(f"  响应内容: {json.dumps(result, ensure_ascii=False)}")if result.get("resCode") == "000000":print(f"  ✅ 导入成功")imported_count += 1else:error_msg = result.get("resMsg", "未知错误")print(f"  ❌ 导入失败: {error_msg}")failed_count += 1else:print(f"  ❌ HTTP 错误: {response.status_code}")print(f"  错误详情: {response.text}")failed_count += 1# 添加短暂延时以避免请求过于频繁import timetime.sleep(0.5)except json.JSONDecodeError as e:print(f"  ⚠️  数据解析失败 (key: {key}): {str(e)}")failed_count += 1except Exception as e:print(f"  ❌ 处理失败 (key: {key}): {str(e)}")failed_count += 1# 4. 输出统计结果print(f"\n{'='*60}")print(f"导入完成!")print(f"成功导入: {imported_count} 条")print(f"导入失败: {failed_count} 条")print(f"总计处理: {imported_count + failed_count} 条")return imported_count, failed_countexcept FileNotFoundError:print(f"❌ 错误: 找不到文件 {REDIS_JSON_FILE}")print("请确认文件路径是否正确,或修改脚本中的 REDIS_JSON_FILE 变量")sys.exit(1)except json.JSONDecodeError as e:print(f"❌ 错误: JSON 文件格式不正确 - {str(e)}")sys.exit(1)except Exception as e:print(f"❌ 错误: {str(e)}")sys.exit(1)if __name__ == "__main__":print("="*60)print("文章数据导入脚本 - CMS系统")print("="*60)print(f"目标API: {CMS_API_ENDPOINT}")print(f"数据源: {REDIS_JSON_FILE}")print(f"Token: {AUTH_TOKEN[:20]}...{AUTH_TOKEN[-20:]}")print("-"*60)# 显示将要处理的数据摘要try:with open(REDIS_JSON_FILE, 'r', encoding='utf-8') as f:redis_data = json.load(f)article_keys = [k for k in redis_data.keys() if k.startswith("node:cmsServer:article:")]print(f"检测到 {len(article_keys)} 篇待导入文章:")for i, key in enumerate(article_keys[:5], 1):  # 显示前5个try:data = json.loads(redis_data[key])print(f"  {i}. {data.get('title', '无标题')} (ID: {data.get('identifier', '无标识符')})")except:print(f"  {i}. {key}")if len(article_keys) > 5:print(f"  ... 还有 {len(article_keys)-5} 篇")except:print("无法预览数据内容,将继续执行导入...")print("-"*60)# 询问确认confirm = input("是否开始导入? (输入 'y' 或 'yes' 继续): ")if confirm.lower() in ['y', 'yes']:print("开始导入...")import_articles_from_redis_json()else:print("导入已取消")

 

http://www.jsqmd.com/news/417837/

相关文章:

  • 储能海外营销代运营公司怎么选?上海、苏州B2B出海+社媒代运营服务商汇总 - 品牌2025
  • 导师严选!备受追捧的AI论文写作软件 —— 千笔·专业学术智能体
  • 2026年 东莞腊味/广东腊味厂家推荐排行榜:匠心传承与地道风味口碑之选 - 品牌企业推荐师(官方)
  • 企业级IT运维最佳实践:如何构建高效的软件资产与许可管控体系
  • 直接上结论:10个降AI率网站测评!专科生必看的降AI率工具推荐
  • 2026年河南冷库质量保障TOP5名单出炉,权威机构发布最新 - 精选优质企业推荐榜
  • 2026年天然肉桂醛及衍生品厂家推荐:武汉能迈科香料有限公司,全系肉桂产品供应 - 品牌推荐官
  • 海外品牌营销推广优选,海外整合营销公司+外贸B2B营销获客公司出海攻略 - 品牌2025
  • github如何下载软件包
  • python3安装及python redis安装
  • 2026年四川省综合布线厂家推荐榜 实力企业TOP4甄选 - 深度智识库
  • LinkedIn营销服务商怎么选?机械设备外贸B2B营销公司+汽车配件海外营销代运营服务商指南 - 品牌2025
  • EchoKitxOceanBaseseekdb:开源的本地化语音AI框架
  • 2026年 模块化机房/精密配电柜/一体化机柜/精密空调厂家推荐榜单:智能高效与稳定可靠的数据中心核心设备深度解析 - 品牌企业推荐师(官方)
  • Hashcat 无显卡服务器 (CPU 模式) 部署方案
  • 2026年情感与少儿心理咨询机构选型指南:如何为家庭成长找到可靠伙伴 - 品牌推荐官
  • 所有人年度生活数字总结报告,比平台总结更走心。
  • 新手也能上手 AI论文写作软件,千笔写作工具 VS WPS AI,研究生专属神器!
  • 2026 年全国扫地机厂家哪家好? 口碑品牌适配不同用户需求 优质品牌技术与服务全景解析 - 深度智识库
  • 2026年电池材料/超细/废旧电池/小苏打/超微粉碎机推荐:潍坊帕尔曼粉体设备全系解决方案 - 品牌推荐官
  • 学长亲荐 8个降AI率工具:本科生必看的降AI率测评与推荐
  • 2026环保艺术涂料热销榜:品质之选,打造健康居住环境,家装艺术漆/微晶石艺术漆/艺术涂料,环保艺术涂料实力厂家哪家强 - 品牌推荐师
  • 护网行动红蓝对抗实战复盘:红队突破技巧+蓝队防御避坑,直接套用
  • 实测才敢推!千笔,人气爆表的AI论文软件
  • 计算机毕业设计之基于SpringBoot技术的教学辅助平台的设计与实现
  • Compose 中 Box 布局核心概念:ContentAlignment vs Modifier.align
  • 计算机毕业设计之springboot篮球比赛服务平台
  • MongoDB MCP Server Windows 安装指南
  • GEO推广哪家企业技术强?六大垂直平台供您参考 - 品牌推荐大师1
  • 2026 年 2 月徐州压路机/装载机/清扫机防撞系统/夜间施工照明灯/LED信息看板厂家综合选购推荐报告 - 2026年企业推荐榜