[Gastosabertos-dev] Criar modelos no SQLAlchemy a partir de um Data Package - Proof of Concept

Edgar Zanella Alvarenga e em vaz.io
Terça Abril 14 18:27:40 UTC 2015


\o/ Luiz! Luiz! Luiz!

Ótimo trabalho, mesmo. Era algo exatamente nessa linha que tinha
em mente e gostei do que vi. Ainda não testei na minha máquina,
mas dei uma boa olhada no código.

Vamos lá as suas perguntas:

On 13/04/2015 17:57, Luiz Armesto wrote:

> > 1) Fazer algo semelhante ao feito nesse POC, com metaprogramação,
> criando os objetos necessários para a API em tempo de execução a
> partir do JSON com metadados, como uma lib ou plugin do Flask.

É isso que tenho em mente. Neste documento:

https://github.com/okfn-brasil/documents/blob/master/gastos_abertos/gastos_abertos_architecture.md

no ponto 2 levanto que um dos resultados a partir do CSV + JSON 
descrevendo-o,
seria criaod um outro JSON descrevendo o modelo de dados como será 
criado
no SQAlchemy. Daí usaremos esse JSON pra gerar API, mas não teremos um
gerador de um aplicativo Flask, mas sim uma ferramenta genérica que 
funcionará
de acordo com o JSON descrevendo o modelo dos dados para realizar as 
consultas.

> 2) Apartir do JSON de metadados e de uma coleção de templates, criar
> arquivos .py, com código gerado automaticamente, mas que já tem as
> declarações das classes e métodos no código, sendo executado
> separado e de modo independente da ferramenta. Uma espécie de
> scaffolding.

Eu prefiro a solução 1.

> Qual acham melhor? Alguém pensou em alguma solução diferente?
>
> Obs.: Eu usei o pacote "datapackage" [2] e como ele é bastante
> exigente com o formato do JSON de metadados, vários datapackages do
> data.okfn.org [1] não podem ser carregados diretamentes da url, por
> não seguirem a risca a especificação do formato.

Só fiquei com um pé atrás quanto aos tipos de metadados aceitáveis
pelo datapackage. Digo, se formos estender as informações de um campo,
para fazer referências a outros campos dentro da mesma planilha,
podemos fazer isso como quisermos?


> Obs2.: O POC depende dos pacotes "SQLAlchemy" e "datapackage" (acho
> que também tive que instalar o "mock" para o "datapackage" funcionar
> no Python 2)
>
> []s
>
> [0] https://gist.github.com/LuizArmesto/025aeba8f5c6d6f058ee [2]
> [1] http://dataprotocols.org/data-packages/ [3]
> [2] https://github.com/tryggvib/datapackage [4]--
>
> Luiz Armesto
>
>
> Links:
> ------
> [1] http://data.okfn.org
> [2] https://gist.github.com/LuizArmesto/025aeba8f5c6d6f058ee
> [3] http://dataprotocols.org/data-packages/
> [4] https://github.com/tryggvib/datapackage




Mais detalhes sobre a lista de discussão Gastosabertos-dev