- Base de datos SQLite con información de vehículos - Dashboard web con Flask y Bootstrap - Scripts de web scraping para RockAuto - Interfaz CLI para consultas - Documentación completa del proyecto Incluye: - 12 marcas de vehículos - 10,923 modelos - 10,919 especificaciones de motores - 12,075 combinaciones modelo-año-motor
102 lines
3.4 KiB
Python
102 lines
3.4 KiB
Python
#!/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:
|
|
# Confirmar antes de eliminar
|
|
confirm = input("¿Deseas continuar con la eliminación? (s/N): ")
|
|
if confirm.lower() != 's':
|
|
print("Operación cancelada.")
|
|
return
|
|
|
|
# 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() |