Quais são as suas técnicas para armazenar estruturas numpy nos campos do banco de dados do django e como você as serializa para http? [fechadas]

5

Eu quero publicar um pequeno projeto da web que deve conter alguns dos meus resultados de pesquisa para apresentá-lo à comunidade científica. Todas as minhas análises que eu fiz até agora foram escritas em python, então eu considerei usar o framework web django para fornecer os resultados. Isto é, porque eu pretendo mostrar alguma visualização em dados atualizados, para que eu possa executar minha análise em novos dados por um cron diretamente no django.

na verdade, há duas questões em mente até agora: como vou começar a desenvolver:

  1. Como posso armazenar facilmente numpy arrays no sqlite para manter a estrutura do array e qual tipo de campo de banco de dados do django é mais adequado?
  2. Qual é a melhor maneira de lidar com json.dump the numpy 2d-arrays em d3.js?

Como você pode ver, é bastante colocar o numpy + django + d3.js juntos. Meu primeiro hacking foi para armazenar os resultados numpy como seqüências de caracteres, mas acho que isso não é muito melhor, pois eu preciso analisá-los novamente depois de puxá-los do banco de dados. Quanto à segunda pergunta, eu já encontrei simplejson.dumps , mas infelizmente isso não funciona em numpy arrays e, assim, às vezes eu precisava hackear algo assim

return  HttpResponse('{"array1" : '+simplejson.dumps(list(array1))+'}')

que eu realmente não gosto muito.

Então, para reunir novamente:

Quais são as suas técnicas para armazenar numpy estruturas nos campos do banco de dados do django e como você as serializa para http ?

    
por Milla Well 07.01.2013 / 16:44
fonte

1 resposta

3

a melhor solução depende de várias outras perguntas, por exemplo:

  1. você precisa consultar o DB para o conteúdo da matriz?
    se sim, você provavelmente precisará armazenar os arrays como strings e consultar strings (regex). se não, considere a possibilidade de serializar com cPickle . O cPickle é rápido e menos detalhado que simples strings.
    De qualquer forma, você terá que colocar sua matriz em um campo de texto.

  2. você precisa ler ou modificar os arrays em python depois que eles são gravados no DB?
    se sim, o cPickle é o caminho a percorrer. você o lê de volta do banco de dados, recria o array numpy, lê ou modifica e então codifica o array como json.
    se não, (e seus arrays não são proibitivamente grandes), armazene o array diretamente como json e apenas escreva o db-record textual para o http-respose.

por 07.01.2013 / 21:12
fonte