Quali sono le tue tecniche per archiviare strutture numpy nei campi del database django e come li serializzi per http? [chiuso]

5

Voglio pubblicare un piccolo progetto web che dovrebbe contenere alcuni dei miei risultati di ricerca per presentarlo alla comunità scientifica. Tutte le mie analisi che ho eseguito finora sono già state scritte in python, quindi ho considerato di usare il framework web di django per fornire i risultati. Questo perché ho intenzione di mostrare qualche visualizzazione su dati aggiornati, così posso eseguire le mie analisi su nuovi dati da un cron direttamente in django.

ci sono attualmente due domande sulla mia mente, come inizierò a sviluppare:

  1. Come posso memorizzare facilmente numpy arrays in sqlite per mantenere la struttura della matrice e quale tipo di campo del database django si adatta meglio?
  2. Qual è il modo migliore per json.dump di numpy 2d-arrays di gestirli in d3.js?

Come puoi vedere si tratta di mettere insieme numpy + django + d3.js. Il mio primo hacking è stato quello di memorizzare i risultati numpy come stringhe, ma penso che questo non sia proprio il migliore, dal momento che ho bisogno di analizzarli di nuovo dopo averli estratti dal database. Riguardo alla seconda domanda ho già trovato simplejson.dumps ma sfortunatamente non funziona su numpy arrays e quindi, a volte ho avuto bisogno di hackerare qualcosa del genere

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

che in realtà non mi piace molto

Quindi per rimetterlo insieme:

Quali sono le tue tecniche per memorizzare numpy strutture nei campi del database django e come li serializzi per http ?

    
posta Milla Well 07.01.2013 - 16:44
fonte

1 risposta

3

la soluzione migliore dipende da una serie di ulteriori domande, ad esempio:

  1. hai bisogno di interrogare il DB per il contenuto dell'array?
    in caso affermativo, sarà probabilmente necessario archiviare gli array come stringhe e interrogare le stringhe (regex). in caso negativo, prendere in considerazione la serializzazione con cPickle . cPickle è veloce e meno prolisso di semplici stringhe.
    in ogni caso, dovrai mettere la tua matrice in un campo di testo.

  2. hai bisogno di leggere o modificare gli array in python dopo che sono stati scritti nel DB?
    se sì, cPickle è la strada da percorrere. leggi di nuovo dal db, ricrea l'array numpy, leggi o modifica e quindi codifica l'array come json.
    se no, (e i tuoi array non sono proibitivamente grandi) archivia l'array direttamente come json e scrivi semplicemente il db-record letteralmente al http-respose.

risposta data 07.01.2013 - 21:12
fonte

Leggi altre domande sui tag