2012-01-17 13 views
7

Ci sono molti messaggi sparsi su StackOverflow, relativi ai moduli Python usati per salvare e caricare i dati.Quali moduli Python disponibili ci sono per salvare e caricare i dati?

Io stesso ho familiarità con json e pickle e ho sentito parlare anche di pytables. Probabilmente ci sono più là fuori. Inoltre, ogni modulo sembra adattarsi a un determinato scopo e ha i suoi limiti (ad esempio il caricamento di un elenco di grandi dimensioni o di un dizionario con pickle richiede anni se non funziona affatto). Quindi sarebbe bello avere una panoramica adeguata delle possibilità.

Potrebbe quindi contribuire a fornire un elenco completo dei moduli utilizzati per salvare e caricare dati, descrive, per ogni modulo:

  • quale sia lo scopo generale del modulo è,
  • i suoi limiti,
  • perché sceglieresti questo modulo rispetto ad altri?

risposta

7

marshal:

  • Pro:

    • Può leggere e scrivere valori Python in formato binario. Pertanto è molto più veloce di pickle (che è basato sui caratteri).
  • Contro:

    • Non tutti i tipi di oggetti Python sono supportati. Alcuni tipi non supportati come sottoclassi di builtin appariranno come marshall e unmarshal correttamente
    • Non è destinato a essere protetto da dati errati o costruiti maliziosamente.
    • I manutentori di Python si riservano il diritto di modificare il formato di maresciallo in modi incompatibili arretrate in caso di necessità

shelve

  • Pro:

    • Valori in una mensola può essere sostanzialmente arbitrario oggetti Python
  • Contro:

    • non supporta concomitante accesso in lettura/scrittura agli oggetti in Scaffali

ZODB (suggerito da @ Duncan)

  • Pro:

    • persistenza trasparente
    • pieno transazione supporto
    • stoccaggio pluggable
    • architettura scalabile
  • Contro

    • non fa parte della libreria standard.
    • grado (facilmente) per ricaricare i dati a meno che il modello di oggetti pitone originale utilizzato per la persistenza è disponibile (non difficoltà di versione e portabilità dei dati)
+0

Aggiungi a marshall cons: "i manutentori di Python si riservano il diritto di modificare il formato di marshall in modi incompatibili all'indietro in caso di necessità" –

+0

@JanneKarila Aggiunto, grazie. – qiao

+1

È possibile aggiungere ZODB (http://www.zodb.org/documentation/tutorial.html) come terzo. Pro: persistenza trasparente, supporto completo delle transazioni, archiviazione collegabile, architettura scalabile. Contro: non fa parte della libreria standard. – Duncan

4

C'è un overview dei moduli dati persistenza lib standard.

+2

non è certo una risposta, e non quello che l'OP chiedeva! vedi http: // StackOverflow.com/faq # deletion –

+0

@DonQuestion C'è una buona fonte per scoprire i moduli per la persistenza dei dati nella lib standard dove puoi trovare i pro e i contro di essi, quindi perché devi scrivere di nuovo solo ciò che è già scritto nei documenti? – Gandaro

+0

Per rispondere a una domanda devi leggerlo. L'OP ha lasciato intendere che ha già esaminato alcune soluzioni di persistenza ed è consapevole delle loro debolezze. Era ** non ** chiedendo un link ai moduli standard di persistenza di Python, ma per una raccomandazione istruita di alcune animazioni e ** perché ** li avremmo suggeriti con pros/contras e i loro casi d'uso primari. Non vedo questo né nella risposta, né nel link fornito. Se tu seguissi il mio link suggerito ti rendessi conto che la tua risposta non è sufficiente. Ricorda sempre che altri utenti futuri potrebbero avere domande simili. –