Files
Autoparts-DB/remove_brands_and_cleanup_final.py
consultoria-as f395d67136 Initial commit: Sistema Autoparts DB
- 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
2026-01-19 08:45:03 +00:00

105 lines
3.5 KiB
Python

#!/usr/bin/env python3
"""
Script para eliminar marcas específicas y limpiar marcas sin vehículos
"""
import sqlite3
import os
def remove_brands_and_cleanup():
# 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 marcas específicas y limpiando marcas sin vehículos...")
try:
# Marcas a eliminar
brands_to_remove = ['FORD', 'TOYOTA', 'NISSAN', 'HONDA', 'CHEVROLET']
print(f"Marcas a eliminar: {', '.join(brands_to_remove)}")
# Eliminar modelos y combinaciones modelo-año-motor para las marcas especificadas
placeholders = ','.join(['?' for _ in brands_to_remove])
cursor.execute(f"""
DELETE FROM model_year_engine
WHERE model_id IN (
SELECT m.id FROM models m
JOIN brands b ON m.brand_id = b.id
WHERE b.name IN ({placeholders})
)
""", brands_to_remove)
# Eliminar modelos de las marcas especificadas
cursor.execute(f"""
DELETE FROM models
WHERE brand_id IN (
SELECT id FROM brands WHERE name IN ({placeholders})
)
""", brands_to_remove)
# Eliminar las marcas especificadas
cursor.execute(f"""
DELETE FROM brands
WHERE name IN ({placeholders})
""", brands_to_remove)
# También eliminar marcas que no tienen modelos asociados
print("Eliminando marcas sin vehículos...")
cursor.execute("""
DELETE FROM brands
WHERE id NOT IN (
SELECT DISTINCT brand_id FROM models
)
""")
conn.commit()
# 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 models m ON mye.model_id = m.id
JOIN brands b ON m.brand_id = b.id
""")
total_vehicles = cursor.fetchone()[0]
print(f"Total de vehículos restantes: {total_vehicles}")
# Contar marcas restantes
cursor.execute("SELECT COUNT(*) FROM brands")
total_brands = cursor.fetchone()[0]
print(f"Total de marcas restantes: {total_brands}")
# Mostrar marcas restantes
cursor.execute("SELECT name FROM brands ORDER BY name")
remaining_brands = cursor.fetchall()
print(f"Marcas restantes: {[brand[0] for brand in remaining_brands]}")
# Mostrar rango de años actual
cursor.execute("""
SELECT MIN(y.year), MAX(y.year)
FROM years y
JOIN model_year_engine mye ON y.id = mye.year_id
""")
min_year, max_year = cursor.fetchone()
if min_year and max_year:
print(f"Rango de años actual: {min_year} - {max_year}")
else:
print("No hay años con vehículos registrados")
except Exception as e:
print(f"Error al eliminar marcas y limpiar la base de datos: {e}")
conn.rollback()
finally:
conn.close()
if __name__ == "__main__":
remove_brands_and_cleanup()