Spaces:
Running
Running
File size: 3,968 Bytes
6dc5ac9 61c4334 6dc5ac9 61c4334 6dc5ac9 61c4334 6dc5ac9 61c4334 6dc5ac9 61c4334 6dc5ac9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
#!/usr/bin/env python3
"""Script para modificar la estructura de la tabla creacion"""
from connection import get_connection
import sys
def modificar_tabla():
"""Modifica la tabla creacion para agregar uid y cambiar id a INT"""
conn = get_connection()
if not conn:
print("❌ Error: No se pudo conectar a la base de datos")
sys.exit(1)
try:
cursor = conn.cursor()
print("🔨 Iniciando modificación de tabla...")
print("-" * 60)
# Paso 1: Verificar si la tabla existe
cursor.execute("SHOW TABLES LIKE 'registro'")
if not cursor.fetchone():
print("❌ Error: La tabla 'registro' no existe")
sys.exit(1)
print("✅ Tabla 'registro' encontrada")
# Paso 2: Crear tabla temporal con la nueva estructura
sql_tabla_nueva = """
CREATE TABLE `registro_new` (
`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID auto-incremental',
`uid` VARCHAR(255) UNIQUE COMMENT 'UID de Firestore',
`display_name` VARCHAR(255) COMMENT 'Nombre mostrado del usuario',
`pais` VARCHAR(255) COMMENT 'País del usuario',
`correo` VARCHAR(255) UNIQUE COMMENT 'Email del usuario',
`fecha_registro` DATETIME COMMENT 'Fecha de registro',
`usos` INT DEFAULT 0 COMMENT 'Cantidad de usos',
`prompt` VARCHAR(255) COMMENT 'Prompt utilizado',
`proveedor` VARCHAR(255) COMMENT 'Proveedor del servicio',
`seed` INT COMMENT 'Seed para generación',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Fecha de creación',
KEY `idx_uid` (`uid`),
KEY `idx_correo` (`correo`),
KEY `idx_pais` (`pais`),
KEY `idx_fecha_registro` (`fecha_registro`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Tabla de registro de usuarios'
"""
cursor.execute(sql_tabla_nueva)
print("✅ Tabla temporal creada")
# Paso 3: Copiar datos de tabla antigua a nueva (si existen)
cursor.execute("SELECT COUNT(*) FROM `creacion`")
count = cursor.fetchone()[0]
if count > 0:
cursor.execute("""
INSERT INTO `registro_new` (display_name, pais, correo, fecha_registro, usos, prompt, proveedor, seed, created_at)
SELECT display_name, pais, correo, fecha_registro, usos, prompt, proveedor, seed, created_at FROM `creacion`
""")
print(f"✅ {count} registros migrados a tabla nueva")
else:
print("✅ No había registros para migrar")
# Paso 4: Eliminar tabla antigua
cursor.execute("DROP TABLE `creacion`")
print("✅ Tabla antigua eliminada")
# Paso 5: Renombrar tabla nueva
cursor.execute("RENAME TABLE `registro_new` TO `registro`")
print("✅ Tabla nueva renombrada")
conn.commit()
# Verificar estructura final
cursor.execute("DESCRIBE `registro`")
columnas = cursor.fetchall()
print("\n📋 Nueva estructura de la tabla:")
print("-" * 60)
for col in columnas:
print(f" {col[0]:<20} {col[1]:<30} {col[2]}")
cursor.close()
conn.close()
print("\n✅ Modificación completada exitosamente")
except Exception as e:
print(f"❌ Error al modificar la tabla: {e}")
try:
cursor.execute("DROP TABLE IF EXISTS `registro_new`")
conn.commit()
except:
pass
sys.exit(1)
if __name__ == "__main__":
print("\n🔄 Modificando estructura de la BD...")
print("=" * 60)
modificar_tabla()
print("=" * 60)
print("\n⚠️ Recuerda actualizar models.py y funciones.py")
|