ai_member_xiaokui/scripts/check_wechat_table.py
2026-04-14 08:10:01 +08:00

82 lines
2.7 KiB
Python

#!/usr/bin/env python3
"""
查询微信反馈数据表结构
"""
import os
import re
import pymysql
# 从secrets.md读取数据库配置
SECRETS_PATH = "/root/.openclaw/workspace-xiaokui/secrets.md"
def load_mysql_config():
if not os.path.exists(SECRETS_PATH):
raise RuntimeError(f"密钥文件不存在: {SECRETS_PATH}")
with open(SECRETS_PATH, 'r', encoding='utf-8') as f:
content = f.read()
# 匹配微信反馈数据行
pattern = r'\| 微信反馈数据.*?\| `([^`]+)` \| `([^`]+)` \| `([^`]+)` \| `([^`]+)` \| `([^`]+)` \|'
match = re.search(pattern, content, re.DOTALL)
if not match:
raise RuntimeError("secrets.md中未找到微信反馈数据库配置")
host = match.group(1)
port = int(match.group(2))
db = match.group(3)
user = match.group(4)
password = match.group(5)
return {
'host': host,
'port': port,
'user': user,
'password': password,
'database': db,
'charset': 'utf8mb4'
}
def main():
config = load_mysql_config()
print(f"连接数据库: {config['host']}:{config['port']}/{config['database']} (用户: {config['user']})")
conn = None
try:
conn = pymysql.connect(**config)
with conn.cursor() as cursor:
# 查看表结构
cursor.execute("DESCRIBE wechat_group_message")
columns = cursor.fetchall()
print("\n表 wechat_group_message 结构:")
print(f"{'字段名':<20} {'类型':<30} {'是否为空':<8} {'':<5} {'默认值':<10} {'额外':<10}")
print("-" * 100)
for col in columns:
field, type_, null, key, default, extra = col
print(f"{field:<20} {str(type_):<30} {null:<8} {key:<5} {str(default):<10} {extra:<10}")
# 查询总记录数
cursor.execute("SELECT COUNT(*) FROM wechat_group_message")
count = cursor.fetchone()[0]
print(f"\n总记录数: {count}")
# 查询最新10条记录预览
print("\n最新10条记录预览:")
cursor.execute("SELECT * FROM wechat_group_message ORDER BY id DESC LIMIT 10")
rows = cursor.fetchall()
fields = [col[0] for col in cursor.description]
for row in rows:
row_dict = dict(zip(fields, row))
print(f"ID: {row_dict.get('id')} | 时间: {row_dict.get('create_time', '')} | 发送人: {row_dict.get('sender', '')[:10]} | 内容: {str(row_dict.get('content', ''))[:50]}...")
except Exception as e:
print(f"错误: {e}")
finally:
if conn:
conn.close()
if __name__ == '__main__':
main()