Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Definir formatos de CSV y "adaptors" para importar datos #197

Open
5 of 7 tasks
mgaitan opened this issue Mar 12, 2014 · 2 comments
Open
5 of 7 tasks

Definir formatos de CSV y "adaptors" para importar datos #197

mgaitan opened this issue Mar 12, 2014 · 2 comments

Comments

@mgaitan
Copy link
Owner

mgaitan commented Mar 12, 2014

Cada vez tenemos más herramientas para la adquisición de datos (scrappers, consumidores de API), etc.

Como bien planteó Humitos, no es conveniente que estos proemgramas/scripts
esten acoplados a la base de datos de Preciosa, es decir, que creen por sí mismos
instancias de los modelos a los que aportarán información.

Lo deseable es desacoplar la "adquisicion de datos" de la "persistencia en la DB de django" de modo de no tener que correr procesos lentos y muy demandantes en el servidor de producción.

Entonces,

  1. Todos los scrappers/scripts que obtienen datos deben escribir los datos saneados (listos para ser importados) a un formato y estructura estándar. Por ejemplo CSV.
  2. El dataset resultante debe guardarse en un archivo en un path y con nombre de archivo conocido con fecha. Por ejemplo /datasets/sucursales_google_place_2014-03-12.csv
  3. Debemos implementar una manera rápida y fácil de importar estos datasets
    a la bbdd (ahora sí, desde el servidor) mediante un management command que reciba como parémetro el .csv y, opcionalmente, el "adaptador" que convierte a instancias de modelos.

De esta manera, las tareas son desacopladas, y pueden realizarse en momentos y
maquinas distintas.

  • definir formato de dataset para Productos
  • definir formato de dataset para Precios de productos en/sucursal online
  • definir formato de dataset para Sucursales/cadenas
  • implementar adaptador para Productos
  • implementar adaptador para Precios
  • implementar adaptador para Sucursales
  • crear un command manager que reciba el adaptor y el origen de datos (csv con path relativo, absoluto o url) para cargar en la base. Debe mostrar una barra de progreso y devolver en un log las instancias creadas y los errores.
@mgaitan
Copy link
Owner Author

mgaitan commented Mar 12, 2014

herramientas útiles https://github.com/lazybird/django-devour que define los "adaptors" con https://github.com/anthony-tresontani/django-adaptors

mgaitan added a commit that referenced this issue Mar 12, 2014
Fix #183. Se implementa una estructura de CSV para sucursales. ref #197
@mgaitan
Copy link
Owner Author

mgaitan commented Mar 12, 2014

Para "definir formato de dataset para Sucursales/cadenas" ver el management command implmentado en #183 . Genera un CSV con formato dado en la carpeta /datasets

https://github.com/mgaitan/preciosa/blob/develop/preciosa/datos/management/commands/google_places.py

Para otros scripts que generen datos de sucursales, este deberia ser el patrón.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant