ai_member_xiaoxi/export_only_12698.py
小溪 339001c1df 更新:新增用户学习行为数据导出技能
- 新增 user_export_skill.md 完整导出技能说明
- 支持导出指定账户ID或角色ID的完整学习行为数据
- 包含6个sheet:音频数据、互动组件、课程巩固、单元挑战、单元总结、汇总统计
- 已成功验证导出两个用户数据,功能正常可用
2026-03-02 23:21:58 +08:00

145 lines
4.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""单独测试角色12698的导出查看具体报错"""
import os
import json
import sys
import datetime
from typing import Any, Dict, List
# 加载环境变量
def load_env():
env_path = os.path.join(os.getcwd(), ".env")
if os.path.exists(env_path):
with open(env_path, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
k, v = line.split("=", 1)
os.environ[k.strip()] = v.strip().strip('"').strip("'")
load_env()
import psycopg2
from psycopg2.extras import RealDictCursor
import pymysql
import requests
from requests.auth import HTTPBasicAuth
import warnings
warnings.filterwarnings('ignore')
def test_role_12698():
print("="*60)
print("单独测试角色ID=12698的查询")
print("="*60)
# 连接PG
try:
conn = psycopg2.connect(
host=os.getenv("PG_DB_HOST"),
port=int(os.getenv("PG_DB_PORT")),
user=os.getenv("PG_DB_USER"),
password=os.getenv("PG_DB_PASSWORD"),
dbname=os.getenv("PG_DB_DATABASE"),
connect_timeout=10
)
print("✅ PG连接成功")
except Exception as e:
print(f"❌ PG连接失败: {e}")
return
user_id = "12698"
# 测试第一个查询user_component_play_record_0
print(f"\n测试查询表 user_component_play_record_0user_id={user_id}")
try:
with conn.cursor(cursor_factory=RealDictCursor) as cur:
sql = f"""
SELECT user_id, component_unique_code, session_id, c_type, c_id,
play_result, user_behavior_info, updated_at
FROM user_component_play_record_0
WHERE user_id = %s
ORDER BY updated_at DESC
"""
cur.execute(sql, (user_id,))
rows = cur.fetchall()
print(f"✅ 查询成功,返回{len(rows)}条记录")
except Exception as e:
print(f"❌ 查询失败: {e}")
print(f"错误类型: {type(e).__name__}")
# 回滚事务
print("\n尝试回滚事务...")
try:
conn.rollback()
print("✅ 事务回滚成功")
except Exception as e2:
print(f"❌ 回滚失败: {e2}")
# 测试查询课程巩固记录表
print(f"\n测试查询表 user_unit_review_question_resultuser_id={user_id}")
try:
with conn.cursor(cursor_factory=RealDictCursor) as cur:
sql = f"""
SELECT user_id, story_id, chapter_id, question_list, updated_at
FROM user_unit_review_question_result
WHERE user_id = %s
ORDER BY updated_at DESC
"""
cur.execute(sql, (user_id,))
rows = cur.fetchall()
print(f"✅ 查询成功,返回{len(rows)}条记录")
except Exception as e:
print(f"❌ 查询失败: {e}")
print(f"错误类型: {type(e).__name__}")
# 回滚事务
print("\n尝试回滚事务...")
try:
conn.rollback()
print("✅ 事务回滚成功")
except Exception as e2:
print(f"❌ 回滚失败: {e2}")
# 测试查询单元挑战记录表
print(f"\n测试查询表 user_unit_challenge_question_resultuser_id={user_id}")
try:
with conn.cursor(cursor_factory=RealDictCursor) as cur:
sql = f"""
SELECT user_id, story_id, category, score_text, question_list, updated_at
FROM user_unit_challenge_question_result
WHERE user_id = %s
ORDER BY updated_at DESC
"""
cur.execute(sql, (user_id,))
rows = cur.fetchall()
print(f"✅ 查询成功,返回{len(rows)}条记录")
except Exception as e:
print(f"❌ 查询失败: {e}")
print(f"错误类型: {type(e).__name__}")
# 测试查询单元总结记录表
print(f"\n测试查询表 user_unit_summary_recorduser_id={user_id}")
try:
with conn.cursor(cursor_factory=RealDictCursor) as cur:
sql = f"""
SELECT id, user_id, unit_id, updated_at, km_id, km_type, play_time_seconds
FROM user_unit_summary_record
WHERE user_id = %s
ORDER BY updated_at DESC
"""
cur.execute(sql, (user_id,))
rows = cur.fetchall()
print(f"✅ 查询成功,返回{len(rows)}条记录")
except Exception as e:
print(f"❌ 查询失败: {e}")
print(f"错误类型: {type(e).__name__}")
import traceback
traceback.print_exc()
conn.close()
if __name__ == "__main__":
test_role_12698()