[pybsddb] Checking put() transaction results: what is the proper way in bsddb3?

Denis Papathanasiou denis.papathanasiou at gmail.com
Tue Oct 20 16:38:55 CEST 2009


In the Oracle documentation, when a put() method is called with a 
transaction (DBTxn) object, the integer return value is used to 
determine the state of the transaction.

I.e., if put() returns 0, it's ok to commit, whereas other values mean 
about or retry: 
http://www.oracle.com/technology/documentation/berkeley-db/db/gsg_txn/C/txnexample_c.html

Under bsddb3, it seems that put() does not return a value, even when 
passed a DBTxn object.

I noticed in the test_basics.py file, which came with the latest version 
(4.8.0), that the decision to abort a transaction happens by immediately 
following the put() with a get(), as lines 732-735 show:

         d.put('new rec', 'this is a new record', self.txn)
         self.assertEqual(d.get('new rec', txn=self.txn),
                 'this is a new record')
         self.txn.abort()

Is this the only way to decide commit/aboirt after a transactional put?



More information about the pybsddb mailing list