Fix database mismatches

This commit is contained in:
Koncept Kit
2026-01-04 22:01:26 +07:00
parent 6ec0745966
commit efc2002a67
6 changed files with 215 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env python3
"""
Check for schema mismatches between models.py and database
"""
import os
from sqlalchemy import create_engine, inspect
from dotenv import load_dotenv
from models import Base
load_dotenv()
# Connect to database
engine = create_engine(os.getenv('DATABASE_URL'))
inspector = inspect(engine)
print("=" * 80)
print("SCHEMA MISMATCH DETECTION")
print("=" * 80)
mismatches = []
# Check each model
for table_name, table in Base.metadata.tables.items():
print(f"\n📋 Checking table: {table_name}")
# Get columns from database
try:
db_columns = {col['name'] for col in inspector.get_columns(table_name)}
except Exception as e:
print(f" ❌ Table doesn't exist in database: {e}")
mismatches.append(f"{table_name}: Table missing in database")
continue
# Get columns from model
model_columns = {col.name for col in table.columns}
# Find missing columns
missing_in_db = model_columns - db_columns
extra_in_db = db_columns - model_columns
if missing_in_db:
print(f" ⚠️ Missing in DATABASE: {missing_in_db}")
mismatches.append(f"{table_name}: Missing in DB: {missing_in_db}")
if extra_in_db:
print(f" Extra in DATABASE (not in model): {extra_in_db}")
if not missing_in_db and not extra_in_db:
print(f" ✅ Schema matches!")
print("\n" + "=" * 80)
if mismatches:
print(f"❌ FOUND {len(mismatches)} MISMATCHES:")
for mismatch in mismatches:
print(f" - {mismatch}")
else:
print("✅ ALL SCHEMAS MATCH!")
print("=" * 80)