renamed DbShelf->DbfilenameShelf;added BsdDbShelf (David Ely)
This commit is contained in:
parent
e03a86c3d9
commit
abad1cc647
|
@ -73,23 +73,64 @@ class Shelf:
|
||||||
self.close()
|
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.
|
"""Shelf implementation using the "anydbm" generic dbm interface.
|
||||||
|
|
||||||
This is initialized with the filename for the dbm database.
|
This is initialized with the filename for the dbm database.
|
||||||
See the module's __doc__ string for an overview of the interface.
|
See the module's __doc__ string for an overview of the interface.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, filename):
|
def __init__(self, filename, flag='c'):
|
||||||
import anydbm
|
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.
|
"""Open a persistent dictionary for reading and writing.
|
||||||
|
|
||||||
Argument is the filename for the dbm database.
|
Argument is the filename for the dbm database.
|
||||||
See the module's __doc__ string for an overview of the interface.
|
See the module's __doc__ string for an overview of the interface.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return DbShelf(filename)
|
return DbfilenameShelf(filename, flag)
|
||||||
|
|
Loading…
Reference in New Issue