|
A ``shelf'' is a persistent, dictionary-like object. The difference with ``dbm'' databases
is that the values (not the keys!) in a shelf can be essentially arbitrary Python objects --
anything that the pickle module can
handle. This includes most class instances, recursive data types, and objects containing lots
of shared sub-objects. The keys are ordinary strings.
-
| open( |
filename[,flag='c'[,protocol=None[,writeback=False[,binary=None]]]]) |
- Open a persistent dictionary. The filename specified is the base filename for the
underlying database. As a side-effect, an extension may be added to the filename and more
than one file may be created. By default, the underlying database file is opened for
reading and writing. The optional flag pararameter has the same interpretation
as the flag parameter of anydbm.open.
By default, version 0 pickles are used to serialize values. The version of the pickle
protocol can be specified with the protocol parameter. Changed in version 2.3: The protocol parameter was added.
The binary parameter is deprecated and provided for backwards compatibility
only.
By default, mutations to persistent-dictionary mutable entries are not automatically
written back. If the optional writeback parameter is set to True,
all entries accessed are cached in memory, and written back at close time; this can make
it handier to mutate mutable entries in the persistent dictionary, but, if many entries
are accessed, it can consume vast amounts of memory for the cache, and it can make the
close operation very slow since all accessed entries are written back (there is no way to
determine which accessed entries are mutable, nor which ones were actually mutated).
Shelve objects support all methods supported by dictionaries. This eases the transition
from dictionary based scripts to those requiring persistent storage.
|