Website hosting service by

 Back to Index

3.17.2 Example

To summarize the interface (key is a string, data is an arbitrary object):

import shelve

d = # open -- file may get suffix added by low-level
                          # library

d[key] = data   # store data at key (overwrites old data if
                # using an existing key)
data = d[key]   # retrieve a COPY of data at key (raise KeyError if no
                # such key)
del d[key]      # delete data stored at key (raises KeyError
                # if no such key)
flag = d.has_key(key)   # true if the key exists
list = d.keys() # a list of all existing keys (slow!)

# as d was opened WITHOUT writeback=True, beware:
d['xx'] = range(4)  # this works as expected, but...
d['xx'].append(5)   # *this doesn't!* -- d['xx'] is STILL range(4)!!!
# having opened d without writeback=True, you need to code carefully:
temp = d['xx']      # extracts the copy
temp.append(5)      # mutates the copy
d['xx'] = temp      # stores the copy right back, to persist it
# or,,writeback=True) would let you just code
# d['xx'].append(5) and have it work as expected, BUT it would also
# consume more memory and make the d.close() operation slower.

d.close()       # close it

See Also:

Module anydbm:
Generic interface to dbm-style databases.
Module bsddb:
BSD db database interface.
Module dbhash:
Thin layer around the bsddb which provides an open function like the other database modules.
Module dbm:
Standard Unix database interface.
Module dumbdbm:
Portable implementation of the dbm interface.
Module gdbm:
GNU database interface, based on the dbm interface.
Module pickle:
Object serialization used by shelve.
Module cPickle:
High-performance version of pickle.



2002-2004 Webhosting Service


Disclaimer: This documentation is provided only for the benefits of our hosting customers.
For authoritative source of the documentation, please refer to offers domain name registration, domain name transfer and domain search services  

Cheap domain registration : Register domain name or buy domain name, including free domain hosting services


Domain registration : Buy domain name or register domain name from $5.95/year only