]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
renamed DbShelf->DbfilenameShelf;added BsdDbShelf (David Ely)
authorGuido van Rossum <guido@python.org>
Fri, 11 Aug 1995 14:19:16 +0000 (14:19 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 11 Aug 1995 14:19:16 +0000 (14:19 +0000)
Lib/shelve.py

index fcd52ec168698f9759e32e5d53f41cdddeec169f..18aa905a9ada0caa170da77f13fa03ab5858e9b2 100644 (file)
@@ -73,23 +73,64 @@ class Shelf:
                self.close()
 
 
-class DbShelf(Shelf):
+class BsdDbShelf(Shelf):
+       """Shelf implementation using the "BSD" db interface.
+
+       The actual database is opened using one of thethe "bsddb" modules
+       "open" routines (i.e. bsddb.hashopen, bsddb.btopen or bsddb.rnopen.)
+
+       This class is initialized with the the database object
+       returned from one of the bsddb open functions.
+
+       See the module's __doc__ string for an overview of the interface.
+       """
+
+       def __init__(self, dict):
+           Shelf.__init__(self, dict)
+
+       def set_location(self, key):
+            (key, value) = self.dict.set_location(key)
+            f = StringIO.StringIO(value)
+            return (key, pickle.Unpickler(f).load())
+
+       def next(self):
+            (key, value) = self.dict.next()
+            f = StringIO.StringIO(value)
+            return (key, pickle.Unpickler(f).load())
+
+       def previous(self):
+            (key, value) = self.dict.previous()
+            f = StringIO.StringIO(value)
+            return (key, pickle.Unpickler(f).load())
+
+       def first(self):
+            (key, value) = self.dict.first()
+            f = StringIO.StringIO(value)
+            return (key, pickle.Unpickler(f).load())
+
+       def last(self):
+            (key, value) = self.dict.last()
+            f = StringIO.StringIO(value)
+            return (key, pickle.Unpickler(f).load())
+
+
+class DbfilenameShelf(Shelf):
        """Shelf implementation using the "anydbm" generic dbm interface.
 
        This is initialized with the filename for the dbm database.
        See the module's __doc__ string for an overview of the interface.
        """
        
-       def __init__(self, filename):
+       def __init__(self, filename, flag='c'):
                import anydbm
-               Shelf.__init__(self, anydbm.open(filename))
+               Shelf.__init__(self, anydbm.open(filename, flag))
 
 
-def open(filename):
+def open(filename, flag='c'):
        """Open a persistent dictionary for reading and writing.
 
        Argument is the filename for the dbm database.
        See the module's __doc__ string for an overview of the interface.
        """
        
-       return DbShelf(filename)
+       return DbfilenameShelf(filename, flag)