Fixes http://bugs.python.org/issue1233 - bsddb.dbshelve.DBShelf.append

was useless due to inverted logic.  Also adds a test case for RECNO dbs
to test_dbshelve.
This commit is contained in:
Gregory P. Smith 2007-10-12 18:44:06 +00:00
parent 3a0de08d54
commit d40f126fff
2 changed files with 78 additions and 23 deletions

View file

@ -84,6 +84,9 @@ def open(filename, flags=db.DB_CREATE, mode=0660, filetype=db.DB_HASH,
#---------------------------------------------------------------------------
class DBShelveError(db.DBError): pass
class DBShelf(DictMixin):
"""A shelf to hold pickled objects, built upon a bsddb DB object. It
automatically pickles/unpickles data objects going to/from the DB.
@ -162,10 +165,10 @@ class DBShelf(DictMixin):
return self.db.append(data, txn)
def append(self, value, txn=None):
if self.get_type() != db.DB_RECNO:
if self.get_type() == db.DB_RECNO:
self.append = self.__append
return self.append(value, txn=txn)
raise db.DBError, "append() only supported when dbshelve opened with filetype=dbshelve.db.DB_RECNO"
raise DBShelveError, "append() only supported when dbshelve opened with filetype=dbshelve.db.DB_RECNO"
def associate(self, secondaryDB, callback, flags=0):