""" 데이터베이스 마이그레이션 스크립트 uploaded_file 테이블에 is_public 컬럼을 추가합니다. """ import sqlite3 import os from pathlib import Path # 데이터베이스 경로 db_path = Path(__file__).parent / 'instance' / 'finance_analysis.db' def migrate_database(): """데이터베이스에 is_public 컬럼 추가""" if not db_path.exists(): print(f"데이터베이스 파일이 없습니다: {db_path}") print("앱을 실행하면 자동으로 생성됩니다.") return try: conn = sqlite3.connect(str(db_path)) cursor = conn.cursor() # uploaded_file 테이블에 is_public 컬럼이 있는지 확인 cursor.execute("PRAGMA table_info(uploaded_file)") columns = [column[1] for column in cursor.fetchall()] if 'is_public' in columns: print("is_public 컬럼이 이미 존재합니다.") conn.close() return # is_public 컬럼 추가 (기본값: 0 = False) print("is_public 컬럼을 추가하는 중...") cursor.execute("ALTER TABLE uploaded_file ADD COLUMN is_public BOOLEAN DEFAULT 0") conn.commit() print("is_public 컬럼이 성공적으로 추가되었습니다.") # 기존 데이터의 is_public 값을 0(False)으로 설정 cursor.execute("UPDATE uploaded_file SET is_public = 0 WHERE is_public IS NULL") conn.commit() print("기존 데이터의 is_public 값을 0(False)으로 설정했습니다.") conn.close() print("마이그레이션이 완료되었습니다.") except sqlite3.OperationalError as e: print(f"오류 발생: {e}") if "duplicate column name" in str(e).lower() or "already exists" in str(e).lower(): print("is_public 컬럼이 이미 존재합니다.") else: raise except Exception as e: print(f"예상치 못한 오류: {e}") raise if __name__ == '__main__': print("=" * 60) print("데이터베이스 마이그레이션: is_public 컬럼 추가") print("=" * 60) migrate_database()