Python Languageaccantonare

introduzione

Shelve è un modulo python utilizzato per memorizzare oggetti in un file. Il modulo shelve implementa l'archiviazione persistente per oggetti Python arbitrari che possono essere decapitati utilizzando un'API simile a un dizionario. Il modulo shelve può essere usato come una semplice opzione di memorizzazione persistente per oggetti Python quando un database relazionale è eccessivo. Lo scaffale è accessibile tramite i tasti, proprio come con un dizionario. I valori vengono decapitati e scritti in un database creato e gestito da anydbm.

Osservazioni

Nota: non fare affidamento sul fatto che lo scaffale venga chiuso automaticamente; chiama sempre close() esplicitamente quando non ne hai più bisogno, o usa shelve.open() come gestore del contesto:

with shelve.open('spam') as db:
    db['eggs'] = 'eggs'

Avvertimento:

Poiché il modulo shelve è supportato da pickle , non è sicuro caricare un ripiano da una fonte non affidabile. Come con pickle, il caricamento di uno scaffale può eseguire codice arbitrario.

restrizioni

1 . La scelta del pacchetto di database che verrà utilizzato (come dbm.ndbm o dbm.gnu) dipende da quale interfaccia è disponibile. Pertanto non è sicuro aprire il database direttamente usando dbm. Il database è anche (sfortunatamente) soggetto alle limitazioni di dbm, se viene usato - questo significa che (la rappresentazione in pickled di) gli oggetti memorizzati nel database dovrebbero essere abbastanza piccoli, e in rari casi le collisioni di chiavi possono causare il database rifiutare gli aggiornamenti.

2. Il modulo shelve non supporta l'accesso simultaneo in lettura / scrittura agli oggetti accantonati. (Gli accessi multipli simultanei in lettura sono sicuri). Quando un programma ha uno scaffale aperto per la scrittura, nessun altro programma dovrebbe averlo aperto per la lettura o la scrittura. Il blocco dei file Unix può essere utilizzato per risolvere questo problema, ma questo differisce tra le versioni di Unix e richiede la conoscenza dell'implementazione del database utilizzata.

accantonare Esempi correlati