Files
Document_Translator/check_db_structure.py
2025-09-03 09:05:51 +08:00

108 lines
3.7 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
# -*- coding: utf-8 -*-
"""
檢查資料庫結構 - 找出翻譯結果儲存方式
"""
import sys
import os
# Fix encoding for Windows console
if sys.stdout.encoding != 'utf-8':
sys.stdout.reconfigure(encoding='utf-8')
if sys.stderr.encoding != 'utf-8':
sys.stderr.reconfigure(encoding='utf-8')
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'app'))
from app import create_app, db
from sqlalchemy import text
def check_db_structure():
"""檢查資料庫結構"""
app = create_app()
with app.app_context():
print("=== 檢查資料庫結構 ===")
# 列出所有表
result = db.session.execute(text("SHOW TABLES"))
tables = result.fetchall()
print(f"資料庫中的表:")
for table in tables:
table_name = table[0]
print(f" - {table_name}")
# 檢查表結構
desc_result = db.session.execute(text(f"DESC {table_name}"))
columns = desc_result.fetchall()
for col in columns:
print(f" {col[0]} ({col[1]})")
# 檢查特定任務的相關資料
print(f"\n=== 檢查特定任務資料 ===")
job_uuid = "9c6548ac-2f59-45f4-aade-0a9b3895bbfd"
# 查詢任務資料
job_result = db.session.execute(text("""
SELECT id, job_uuid, status, progress, total_tokens, total_cost, target_languages
FROM dt_translation_jobs
WHERE job_uuid = :uuid
"""), {'uuid': job_uuid})
job_row = job_result.fetchone()
if job_row:
print(f"任務ID: {job_row[0]}")
print(f"UUID: {job_row[1]}")
print(f"狀態: {job_row[2]}")
print(f"進度: {job_row[3]}")
print(f"Tokens: {job_row[4]}")
print(f"成本: {job_row[5]}")
print(f"目標語言: {job_row[6]}")
job_id = job_row[0]
# 查詢相關檔案
files_result = db.session.execute(text("""
SELECT file_type, filename, language_code, file_size, created_at
FROM dt_job_files
WHERE job_id = :job_id
"""), {'job_id': job_id})
files = files_result.fetchall()
print(f"\n相關檔案 ({len(files)}):")
for file_row in files:
print(f" {file_row[0]}: {file_row[1]} ({file_row[2]}) - {file_row[3]} bytes")
# 查詢翻譯cache如果存在的話
if 'dt_translation_cache' in [t[0] for t in tables]:
cache_result = db.session.execute(text("""
SELECT COUNT(*) FROM dt_translation_cache
WHERE source_text IN (
SELECT SUBSTRING(source_text, 1, 50)
FROM dt_translation_cache
LIMIT 5
)
"""))
cache_count = cache_result.scalar()
print(f"\n翻譯快取記錄數: {cache_count}")
# 取幾個範例
sample_result = db.session.execute(text("""
SELECT source_text, target_language, translated_text
FROM dt_translation_cache
LIMIT 5
"""))
samples = sample_result.fetchall()
print(f"快取範例:")
for sample in samples:
print(f" {sample[0][:50]}... -> [{sample[1]}] {sample[2][:50]}...")
else:
print(f"找不到任務: {job_uuid}")
if __name__ == "__main__":
check_db_structure()