3.17 shelve -- Persistenza degli oggetti Python

``shelf'' è un oggetto persistente simile al dizionario. La differenza con i database ``dbm'' è che i valori (non le chiavi!) contenuti in ``shelf'' possono essere essenzialmente oggetti arbitrari Python - quasiasi cosa che il modulo pickle possa gestire. Questo include la maggior parte delle istanze di classe, tipi di dati ricorsivi ed oggetti contenenti molti condivisi oggetti derivati. Le chiavi sono stringhe ordinarie.

open( filename[,flag='c'[,protocol=None[,writeback=False[,binary=None]]]])
Apre un dizionario persistente. Il nome del file specificato è il nome del file per il database sottostante. Come effetto collaterale, un'estensione può venire aggiunta al nome del file e più di un file può essere creato. In modo predefinito, il file del database sottostante viene aperto in lettura e scrittura. Il parametro facoltativo flag ha lo stesso significato del parametro flag di anydbm.open.

Predefinitamente, serializzatori di versione 0 vengono utilizzati per serializzare i valori. La versione del protocollo del serializzatore può venire specificata con il parametero protocol. Modificato nella versione 2.3: Il parametro protocol è stato aggiunto. Il parametro binary è deprecato, e viene fornito solo per compatibilità all'indietro con le versioni precedenti.

In modo predefinito, le mutazioni di elementi modificabili in dizionari persistenti non vengono riscritte in automatico. Se il parametro facoltativo writeback viene impostato a True (NdT: Vero), tutti gli elementi a cui si è avuto accesso vengono inseriti nella cache in memoria, e riscritti al momento della chiusura; questo può rendere più maneggevole il cambiamento dei valori modificabili nel dizionario persistente, ma se molti elementi vengono richiamati, può consumare una gran quantità di memoria per la cache, e può rendere l'operazione di chiusura molto lenta, finché tutti gli elementi richiamati non vengono riscritti (non esiste un modo per determinare quali elementi sono modificabili, e nemmeno per quelli effettivamente modificati).

Gli oggetti shelve supportano tutti i metodi supportati dai dizionari. Questo semplifica la transizione di dizionari basati sugli script in dizionari che richiedono la memorizzazione persistente.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.