#!/usr/bin/env python3 """ Apply SQL migration 002 to existing database Migration 002: Add network_results_json column to benchmarks table Usage: python apply_migration_002.py """ import sqlite3 import os # Database path DB_PATH = os.path.join(os.path.dirname(__file__), "data", "data.db") MIGRATION_PATH = os.path.join(os.path.dirname(__file__), "migrations", "002_add_network_results.sql") def apply_migration(): """Apply the SQL migration 002""" if not os.path.exists(DB_PATH): print(f"❌ Database not found at {DB_PATH}") print(" The database will be created automatically on first run.") return if not os.path.exists(MIGRATION_PATH): print(f"❌ Migration file not found at {MIGRATION_PATH}") return print(f"📂 Database: {DB_PATH}") print(f"📄 Migration: {MIGRATION_PATH}") print() # Read migration SQL with open(MIGRATION_PATH, 'r') as f: migration_sql = f.read() # Connect to database conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() try: # Check if column already exists cursor.execute("PRAGMA table_info(benchmarks)") columns = [row[1] for row in cursor.fetchall()] if 'network_results_json' in columns: print("⚠️ Migration 002 already applied (network_results_json column exists)") print("✅ Database is up to date") return # Apply migration print("🔄 Applying migration 002...") cursor.executescript(migration_sql) conn.commit() print("✅ Migration 002 applied successfully!") print() print("New column added to benchmarks:") print(" - network_results_json") except sqlite3.Error as e: print(f"❌ Error applying migration: {e}") conn.rollback() finally: conn.close() if __name__ == "__main__": apply_migration()