summaryrefslogtreecommitdiffstats
path: root/Lib/anydbm.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/anydbm.py')
-rw-r--r--Lib/anydbm.py51
1 files changed, 46 insertions, 5 deletions
diff --git a/Lib/anydbm.py b/Lib/anydbm.py
index 49e819b..d24efe7 100644
--- a/Lib/anydbm.py
+++ b/Lib/anydbm.py
@@ -1,9 +1,50 @@
-"""A generic interface to all dbm clones."""
+"""A generic interface to all dbm clones.
+
+Instead of
+
+ import dbm
+ d = dbm.open(file, 'rw', 0666)
+
+use
+
+ import anydbm
+ d = anydbm.open(file)
+
+The returned object is a dbm, gdbm or (on the Mac) dbmac object,
+dependent on availability of the modules (tested in this order).
+
+It has the following interface (key and data are strings):
+
+ d[key] = data # store data at key (may override data at
+ # existing key)
+ data = d[key] # retrieve 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() # return a list of all existing keys (slow!)
+
+Future versions may change the order in which implementations are
+tested for existence, add interfaces to other db-like implementations
+(e.g. BSD Hash), and (in the presence of multiple implementations)
+decide which module to use based upon the extension or contents of an
+existing database file.
+
+The open function has an optional second argument. This can be set to
+'r' to open the database for reading only. Don't pas an explicit 'w'
+or 'rw' to open it for writing, as the different interfaces have
+different interpretation of their mode argument if it isn't 'r'.
+"""
try:
import dbm
- def open(file, mode = 'rw'):
- return dbm.open(file, mode, 0666)
+ def open(filename, mode = 'rw'):
+ return dbm.open(filename, mode, 0666)
except ImportError:
- import dbmac
- open = dbmac.open
+ try:
+ import gdbm
+ def open(filename, mode = 'w'):
+ return gdbm.open(filename, mode, 0666)
+ except ImportError:
+ import dbmac
+ open = dbmac.open