#!/usr/bin/env python3 """ Script para eliminar vehículos de 1975 hacia abajo de la base de datos """ import sqlite3 import os def remove_old_vehicles(): # Verificar que la base de datos exista db_path = "vehicle_database/vehicle_database.db" if not os.path.exists(db_path): print(f"Error: Base de datos no encontrada en {db_path}") return conn = sqlite3.connect(db_path) cursor = conn.cursor() print("Eliminando vehículos de 1975 hacia abajo de la base de datos...") try: # Contar cuántos vehículos vamos a eliminar antes de hacerlo cursor.execute(""" SELECT COUNT(*) FROM model_year_engine mye JOIN years y ON mye.year_id = y.id WHERE y.year <= 1975 """) count_to_delete = cursor.fetchone()[0] print(f"Se eliminarán {count_to_delete} vehículos de 1975 hacia abajo") if count_to_delete > 0: print("Procediendo con la eliminación...") # Eliminar las combinaciones modelo-año-motor para años <= 1975 cursor.execute(""" DELETE FROM model_year_engine WHERE year_id IN ( SELECT id FROM years WHERE year <= 1975 ) """) # Eliminar los años <= 1975 que ya no tienen registros asociados cursor.execute(""" DELETE FROM years WHERE year <= 1975 AND id NOT IN ( SELECT DISTINCT year_id FROM model_year_engine ) """) conn.commit() print(f"Se eliminaron {count_to_delete} registros de vehículos de 1975 hacia abajo") # Mostrar algunos de los años que se eliminaron print("\nAños eliminados:") cursor.execute(""" SELECT DISTINCT y.year FROM years y WHERE y.year <= 1975 ORDER BY y.year DESC """) deleted_years = cursor.fetchall() if deleted_years: for year in deleted_years: print(f" - {year[0]}") else: print(" (No quedan años <= 1975 en la base de datos)") else: print("No hay vehículos de 1975 hacia abajo para eliminar") # Mostrar un resumen de la base de datos actualizada print("\nResumen de la base de datos actualizada:") # Contar vehículos restantes cursor.execute(""" SELECT COUNT(*) FROM model_year_engine mye JOIN years y ON mye.year_id = y.id """) total_vehicles = cursor.fetchone()[0] print(f"Total de vehículos restantes: {total_vehicles}") # Mostrar rango de años actual cursor.execute("SELECT MIN(year), MAX(year) FROM years") min_year, max_year = cursor.fetchone() print(f"Rango de años actual: {min_year} - {max_year}") except Exception as e: print(f"Error al eliminar vehículos antiguos: {e}") conn.rollback() finally: conn.close() if __name__ == "__main__": remove_old_vehicles()