Files
ewoooc/tests/test_pg_sync.py
ogt 1b4f3a7bbe
Some checks failed
CD Pipeline / deploy (push) Failing after 59s
feat: EwoooC 初始化 — 完整專案推版至 Gitea
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml)
- 部署模式: rsync Python 檔案至 188 → docker restart (volume mount)
- Dockerfile/requirements 變動時自動重建 Docker image
- 部署通知: Telegram (開始/成功/失敗)
- 健康檢查: https://mo.wooo.work/health (最多 5 次重試)
- 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 01:21:13 +08:00

65 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""測試完整 76 欄位同步"""
import sqlite3
import psycopg2
# 取得所有欄位
sqlite_conn = sqlite3.connect("data/momo_database.db")
cursor = sqlite_conn.cursor()
cursor.execute("PRAGMA table_info(realtime_sales_monthly)")
col_info = cursor.fetchall()
columns = [c[1] for c in col_info]
print(f"{len(columns)} 個欄位")
# 檢查特殊字元
special_chars = []
for i, col in enumerate(columns):
if "%" in col or "(" in col or ")" in col:
special_chars.append((i, col))
print(f"\n包含特殊字元的欄位: {len(special_chars)}")
for i, col in special_chars:
print(f" {i}: {col}")
# 測試完整 76 欄位同步
print("\n測試完整欄位同步...")
cursor.execute("SELECT * FROM realtime_sales_monthly LIMIT 10")
rows = cursor.fetchall()
pg_conn = psycopg2.connect(
host="localhost", port="5432",
user="momo", password="wooo_pg_2026",
database="momo_analytics"
)
pg_cursor = pg_conn.cursor()
# 建立表格
pg_cursor.execute("DROP TABLE IF EXISTS test_full76 CASCADE")
cols_def = ", ".join([f'"{c}" TEXT' for c in columns])
pg_cursor.execute(f"CREATE TABLE test_full76 (id SERIAL PRIMARY KEY, {cols_def})")
pg_conn.commit()
print("表建立成功")
# 插入資料
cols_sql = ", ".join([f'"{c}"' for c in columns])
placeholders = ", ".join(["%s"] * len(columns))
sql = f"INSERT INTO test_full76 ({cols_sql}) VALUES ({placeholders})"
success_count = 0
for i, row in enumerate(rows):
try:
pg_cursor.execute(sql, tuple(row))
success_count += 1
except Exception as e:
print(f"{i} 筆失敗: {e}")
pg_conn.rollback()
pg_conn.commit()
print(f"成功插入: {success_count}/{len(rows)}")
pg_cursor.execute("DROP TABLE test_full76 CASCADE")
pg_conn.commit()
pg_conn.close()
sqlite_conn.close()