seed.py 4.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from app import create_app
  2. from models import db, DatosSolaresCiudad, CatalogoPaneles, Configuracion
  3. def seed_database():
  4. app = create_app()
  5. with app.app_context():
  6. print("Iniciando poblado de base de datos...")
  7. # Opcional: Limpiar tablas existentes si quieres reiniciar de cero
  8. db.drop_all()
  9. db.create_all()
  10. # Configuración
  11. if not Configuracion.query.filter_by(clave='precio_kwh').first():
  12. print("Creando configuración por defecto...")
  13. default_config = Configuracion(clave='precio_kwh', valor='0.04')
  14. db.session.add(default_config)
  15. else:
  16. print("La configuración ya existe.")
  17. # Cities (Ecuador)
  18. if not DatosSolaresCiudad.query.first():
  19. print("Creando ciudades...")
  20. cities = [
  21. # Sierra
  22. DatosSolaresCiudad(nombre_ciudad="Quito", provincia="Pichincha", irradiacion_h_promedio=5.1),
  23. DatosSolaresCiudad(nombre_ciudad="Cuenca", provincia="Azuay", irradiacion_h_promedio=4.8),
  24. DatosSolaresCiudad(nombre_ciudad="Loja", provincia="Loja", irradiacion_h_promedio=5.0),
  25. DatosSolaresCiudad(nombre_ciudad="Ambato", provincia="Tungurahua", irradiacion_h_promedio=4.7),
  26. DatosSolaresCiudad(nombre_ciudad="Ibarra", provincia="Imbabura", irradiacion_h_promedio=4.9),
  27. DatosSolaresCiudad(nombre_ciudad="Riobamba", provincia="Chimborazo", irradiacion_h_promedio=5.2),
  28. DatosSolaresCiudad(nombre_ciudad="Tulcán", provincia="Carchi", irradiacion_h_promedio=4.8),
  29. DatosSolaresCiudad(nombre_ciudad="Latacunga", provincia="Cotopaxi", irradiacion_h_promedio=5.2),
  30. DatosSolaresCiudad(nombre_ciudad="Guaranda", provincia="Bolívar", irradiacion_h_promedio=4.9),
  31. DatosSolaresCiudad(nombre_ciudad="Azogues", provincia="Cañar", irradiacion_h_promedio=4.8),
  32. # Costa
  33. DatosSolaresCiudad(nombre_ciudad="Guayaquil", provincia="Guayas", irradiacion_h_promedio=4.6),
  34. DatosSolaresCiudad(nombre_ciudad="Manta", provincia="Manabí", irradiacion_h_promedio=5.3),
  35. DatosSolaresCiudad(nombre_ciudad="Portoviejo", provincia="Manabí", irradiacion_h_promedio=5.0),
  36. DatosSolaresCiudad(nombre_ciudad="Esmeraldas", provincia="Esmeraldas", irradiacion_h_promedio=4.5),
  37. DatosSolaresCiudad(nombre_ciudad="Babahoyo", provincia="Los Ríos", irradiacion_h_promedio=4.4),
  38. DatosSolaresCiudad(nombre_ciudad="Machala", provincia="El Oro", irradiacion_h_promedio=4.7),
  39. DatosSolaresCiudad(nombre_ciudad="Santa Elena", provincia="Santa Elena", irradiacion_h_promedio=5.5),
  40. DatosSolaresCiudad(nombre_ciudad="Santo Domingo", provincia="Santo Domingo de los Tsáchilas", irradiacion_h_promedio=4.2),
  41. # Oriente (Amazonía)
  42. DatosSolaresCiudad(nombre_ciudad="Nueva Loja", provincia="Sucumbíos", irradiacion_h_promedio=4.0),
  43. DatosSolaresCiudad(nombre_ciudad="Puerto Francisco de Orellana", provincia="Orellana", irradiacion_h_promedio=4.1),
  44. DatosSolaresCiudad(nombre_ciudad="Tena", provincia="Napo", irradiacion_h_promedio=3.8),
  45. DatosSolaresCiudad(nombre_ciudad="Puyo", provincia="Pastaza", irradiacion_h_promedio=3.9),
  46. DatosSolaresCiudad(nombre_ciudad="Macas", provincia="Morona Santiago", irradiacion_h_promedio=4.0),
  47. DatosSolaresCiudad(nombre_ciudad="Zamora", provincia="Zamora Chinchipe", irradiacion_h_promedio=4.1),
  48. # Insular
  49. DatosSolaresCiudad(nombre_ciudad="Puerto Ayora", provincia="Galápagos", irradiacion_h_promedio=5.8),
  50. DatosSolaresCiudad(nombre_ciudad="Puerto Baquerizo Moreno", provincia="Galápagos", irradiacion_h_promedio=5.7)
  51. ]
  52. db.session.add_all(cities)
  53. else:
  54. print("Las ciudades ya existen.")
  55. # Panels
  56. if not CatalogoPaneles.query.first():
  57. print("Creando paneles...")
  58. panels = [
  59. CatalogoPaneles(marca="SunPower", modelo="Maxeon 3", eficiencia_r=0.22, area_m2=1.6, precio_unitario=350),
  60. CatalogoPaneles(marca="Canadian Solar", modelo="HiKu", eficiencia_r=0.18, area_m2=1.7, precio_unitario=220),
  61. CatalogoPaneles(marca="Jinko", modelo="Tiger Pro", eficiencia_r=0.20, area_m2=1.65, precio_unitario=250)
  62. ]
  63. db.session.add_all(panels)
  64. else:
  65. print("Los paneles ya existen.")
  66. db.session.commit()
  67. print("¡Base de datos poblada con éxito!")
  68. if __name__ == '__main__':
  69. seed_database()