import pymysql

conn = pymysql.connect(
    host='85.215.144.168',
    port=3306,
    user='obradores',
    password='74bjGPSkdD!)9_7K',
    database='pastelerias',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor,
    autocommit=False
)

sql_file = r'c:\fuentes\proyectos delphi\RAUL_ASENCIO\GESTION\scratch\propuesta_actualizacion_articulos.sql'

with open(sql_file, 'r', encoding='utf-8') as f:
    lines = f.readlines()

statements = []
for line in lines:
    line_clean = line.strip()
    if line_clean and not line_clean.startswith('--'):
        # Extract statement before possible trailing semicolon/comment
        if ';' in line_clean:
            stmt = line_clean.split(';')[0].strip()
            if stmt:
                statements.append(stmt)

print(f"Total sentencias a ejecutar: {len(statements)}")

try:
    with conn.cursor() as cur:
        for idx, stmt in enumerate(statements, 1):
            print(f"[{idx}/{len(statements)}] Ejecutando: {stmt[:60]}...")
            cur.execute(stmt)
    conn.commit()
    print("\n✅ Todas las sentencias se ejecutaron y confirmaron (COMMIT) correctamente.")
except Exception as e:
    conn.rollback()
    print(f"\n❌ Error durante la ejecución. Se realizó ROLLBACK: {e}")
    raise e
finally:
    conn.close()
