"pybsddb" are the Python "bindings" for the excellent Oracle Berkeley DB. They are
included in Python since version 2.3. This page will show the more recent version.
I will try to keep version distributed with standard Python updated from time to time.
The numbering schema of pybsddb releases is X.Y.Z. The X.Y combination documents the
highest Berkeley DB release supported. That is, pybsddb 4.7.2 is the third release
of the branch that supports Berkeley DB 4.7.x (the first release would be 4.7.0).
You can link pybsddb against older releases, if you
wish, although the documentation always references the latest supported release.
Pybsddb always tries to link against the latest supported Berkeley DB release. If you
want to link to a particular BDB release, you can do the "python setup" adding
the parameter "--berkeley-db=PATH". If you already have pybsddb installed and you want to
relink it against other Berkeley DB release, you have to reinstall.
When installing pybsddb as a standalone library (that is, you are not using
the python stardard lib bundled version), you have to import it as "bsddb3". This is
because the python standard lib version is named "bsddb", and you want the new version.
For compatibility, you could do "import bsddb3 as bsddb" in your code, if you want.
You can see the pybsddb version writing "bsddb3.__version__". You can see the
Berkeley DB version the binding is linked against with "bsddb3.db.version()".
- bsddb3-4.8.3: Testsuite verified
in Unix 32 bit Python 2.3-2.7a3 and 3.0-3.2r76123, and Berkeley DB 4.1-4.8. (20100222)
This release is compatible with Python 3. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Changes:
- "bsddb.h" inclusion in PYPI is inconsistent. Solved.
- Support for "DB_ENV->mutex_stat()" and "DB_ENV->mutex_stat_print()",
"DB->stat_print()", "DB_ENV->lock_stat_print()",
"DB_ENV->log_stat_print()", "DB_ENV->stat_print()",
"DB_ENV->memp_stat()", "DB_ENV->memp_stat_print()".
- Support for "DB_ENV->get_tmp_dir()".
- Support for "DB_STAT_SUBSYSTEM", "DB_STAT_MEMP_HASH" flags.
- Support for "DB_ENV->set_mp_max_openfd()", "DB_ENV->get_mp_max_openfd()",
"DB_ENV->set_mp_max_write()", "DB_ENV->get_mp_max_write()",
"DB_ENV->get_mp_mmapsize()".
- New DataType: DBLogCursor. If you are using the C api, you could need
to recompile your code because the changes in the api interface
structure.
- Support for "DB_ENV->log_file()", "DB_ENV->log_printf()".
- Solve a core dump if something bad happens while trying to create a
transaction object.
- We protect ourselves of failures in creation of Locks and Sequences
objects.
- EGG file is a ZIP file again, not a directory. This requires that
any program importing the module can write in the ".python-eggs"
of its user.
- Keeping a cached copy of the database stats is a bad idea if we have
several processes working together. We drop all this code. So "len()"
will require a database scanning always, not only when there is any
write. If you need an accurate and fast "len()", the application must
keep that information manually in a database register.
- bsddb3-4.8.2: Testsuite verified
in Unix 32 bit Python 2.3-2.7a1 and 3.0-3.2r76123, and Berkeley DB 4.1-4.8. (20091229)
This release is compatible with Python 3. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Changes:
- Support for "DB_OVERWRITE_DUP", "DB_FOREIGN_ABORT",
"DB_FOREIGN_CASCADE", "DB_FOREIGN_NULLIFY", "DB_PRINTABLE", "DB_INORDER"
flags.
- Support for "DB_FOREIGN_CONFLICT" exception.
- Support for "DB_ENV->memp_trickle()", "DB_ENV->memp_sync()",
"DB_ENV->get_lg_bsize()", "DB_ENV->get_lg_dir()",
"DB_ENV->get_lg_filemode()", "DB_ENV->set_lg_filemode()",
"DB_ENV->get_lk_detect()", "DB_ENV->get_lg_regionmax()",
"DB_ENV->get_lk_max_lockers()", "DB_ENV->set_lk_max_locks()",
"DB_ENV->get_lk_max_objects()", "DB_ENV->set_lk_partitions()",
"DB_ENV->get_lk_partitions()", "DB_ENV->get_flags()",
"DB_ENV->set_cache_max()", "DB_ENV->get_cache_max()",
"DB_ENV->set_thread_count()", "DB_ENV->get_thread_count()",
"DB_ENV->log_set_config()", "DB_ENV->log_get_config()"
functions.
- Support for "DB->get_h_ffactor()", "DB->set_h_nelem()",
"DB->get_h_nelem()", "DB->get_lorder()", "DB->get_pagesize()",
"DB->get_re_pad()", "DB->get_re_len()", "DB->get_re_delim()",
"DB->get_flags()", "DB->get_bt_minkey()",
"DB->set_priority()", "DB->get_priority()",
"DB->set_q_extentsize()", "DB->get_q_extentsize()",
"DB->set_re_source()", "DB->get_re_source()"
functions.
- Unlock the Python GIL when doing "DB_ENV->db_home_get()". This is
slower, because the function is very fast so we add overhead, but it is
called very infrequently and we do the change for consistency.
- bsddb3-4.8.1: Testsuite verified
in Unix 32 bit Python 2.3-2.7r76123 and 3.0-3.2r76123, and Berkeley DB 4.1-4.8. (20091105)
This release is compatible with Python 3. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Changes:
- Support for "DB_ENV->mutex_set_align()" and
"DB_ENV->mutex_get_align()".
- Support for "DB_ENV->mutex_set_increment()" and
"DB_ENV->mutex_get_increment()".
- Support for "DB_ENV->mutex_set_tas_spins()" and
"DB_ENV->mutex_get_tas_spins()".
- Support for "DB_ENV->get_encrypt_flags()".
- Support for "DB->get_encrypt_flags()".
- Support for "DB_ENV->get_shm_key()".
- Support for "DB_ENV->get_cachesize()".
- Support for "DB->get_cachesize()".
- Support for "DB_ENV->get_data_dirs()".
- Testsuite compatibility with recent releases of
Python 3.0 and 3.1, where cPickle has been removed.
- Compatibility with development versions of
Python 2.7 and 3.2 (r76123).
- For a long time, the API has been accesible via C
using "_bsddb.api" or "_pybsddb.api". If you are
using Python 3.2 or up, you acquire access to
that API via the new Capsule protocol (see "bsddb.h").
If you use the C API and upgrade to Python 3.2 and up,
you must update the access code (see "bsddb.h").
- bsddb3-4.8.0: Testsuite verified
in Unix 32 bit Python 2.3-2.6 and 3.0-3.1, and Berkeley DB 4.1-4.8. (20090917)
This release drops support for Berkeley DB 4.0, released in 2001, and adds
support for version 4.8, brand new. If you need 4.0 support, keep using pybsddb 4.7.6. If you want
support for Berkeley DB 4.8, remember to install the BDB library before installing these
bindings.
This release is compatible with Python 3. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Changes:
- Support for Berkeley DB 4.8.
- Compatibility with Python 3.1.
- The "DB_XIDDATASIZE" constant has been renamed
to "DB_GID_SIZE". Update your code!. If linked
to BDB 4.8, only "DB_GID_SIZE" is defined.
If linked to previous BDB versions, we keep
"DB_XIDDATASIZE" but define "DB_GID_SIZE" too,
to be the same value. So, new code can use
the updated constant when used against old
BDB releases.
- "DB_XA_CREATE" is removed. BDB 4.8 has eliminated
XA Resource Manager support.
- Drop support for Berkeley DB 4.0. Our reference
is Red Had Enterprise Linux 3, until October 2010.
After that, RHEL4 has Python 2.3 and BDB 4.2.
- Remove "DBIncompleteError" exception. It was only
used in BDB 4.0.
- Remove "DB_INCOMPLETE", "DB_CHECKPOINT",
"DB_CURLSN". They came from BDB 4.0 too.
- RPC is dropped in Berkeley DB 4.8. The bindings
still keep the API if you link to previous BDB
releases.
- In recno/queue databases, "set_re_delim()" and "set_re_pad()"
require a byte instead of a unicode char, under Python3.
- Support for "DB_ENV->mutex_set_max()" and "DB_ENV->mutex_get_max()".
- bsddb3-4.7.6: Testsuite verified
in Unix 32 bit Python 2.3-2.6 and 3.0, and Berkeley DB 4.0-4.7. (20090428)
This release is compatible with Python 3.0. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Available in PYPI. Changes:
- Compatibility with Python 3.0.1.
- Add support for "DB_ENV->stat()" and "DB_ENV->stat_print()".
- Add support for "DB_ENV->rep_set_clockskew()" and
"DB_ENV->rep_get_clockskew()". The binding support
for base replication is now complete.
- "DB.has_key()" used to return 0 or 1. Changed to return
True or False instead. Check your code!.
- As requested by several users, implement "DB.__contains__()",
to allow constructions like "if key in DB" without
iterating over the entire database. But, BEWARE, this
test is not protected by transactions!. This is the same
problem we already have with "DB.has_key()".
- Change "DBSequence.init_value()" to "DBSequence.initial_value()",
for consistence with Berkeley DB real method name. This could
require minimal changes in your code. The documentation was
right. Noted by "anan".
- Implements "DBCursor->prev_dup()".
- Add support for "DB_GET_BOTH_RANGE", "DB_PREV_DUP",
and "DB_IGNORE_LEASE" flags.
- Export exception "DBRepLeaseExpiredError".
- Add support for "DB_PRIORITY_VERY_LOW", "DB_PRIORITY_LOW",
"DB_PRIORITY_DEFAULT", "DB_PRIORITY_HIGH",
"DB_PRIORITY_VERY_HIGH", and "DB_PRIORITY_UNCHANGED" flags.
- Add support for "DBCursor->set_priority()" and
"DBCursor->get_priority()". The binding support for cursors
is now complete.
- bsddb3-4.7.5: Testsuite verified
in Unix 32 bit Python 2.3-2.6 and 3.0, and Berkeley DB 4.0-4.7. (20090204)
This release is compatible with Python 3.0. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Available in PYPI. Changes:
- Add support for "DB_EID_INVALID" and "DB_EID_BROADCAST" flags.
- Add support for "DB_SEQUENCE->stat_print()". The binding
support for "DB_SEQUENCE" is now complete.
- Add support for "DB_ENV->txn_stat_print()".
- Add support for "DB_ENV->get_timeout()".
- Document that "DB_ENV->txn_stat()" accepts a flag.
- Unlock the GIL when doing "DB_ENV->set_tx_max()" and
"DB_ENV->set_tx_timestamp()".
- Add support for "DB_ENV->get_tx_max()".
- Add support for "DB_ENV->get_tx_timestamp()".
- Add support for "DB_TXN_WAIT" flag.
- Add support for "DB_TXN->set_timeout()".
- Add support for "DB_TXN->set_name()" and
"DB_TXN->get_name()". Under Python 3.0, the name
is an Unicode string. The binding support for
"DB_TXN" is now complete.
- Add support for "DB_REP_PERMANENT", "DB_REP_CONF_NOAUTOINIT",
"DB_REP_CONF_DELAYCLIENT", "DB_REP_CONF_BULK",
"DB_REP_CONF_NOWAIT", "DB_REP_LEASE_EXPIRED",
"DB_REP_CONF_LEASE", "DB_REPMGR_CONF_2SITE_STRICT",
"DB_REP_ANYWHERE", "DB_REP_NOBUFFER" and "DB_REP_REREQUEST"
flags.
- bsddb3-4.7.4: Testsuite verified
in Unix 32 bit Python 2.3-2.6 and 3.0, and Berkeley DB 4.0-4.7. (20090121)
This release is compatible with Python 3.0. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Available in PYPI. Changes:
- Under Python 3.0, "bsddb.db.DB_VERSION_STRING",
"bsddb.db.__version__" and "bsddb.db.cvsid" must
return (unicode) strings instead of bytes. Solved.
- Use the new (20081018) trove classifiers in PyPI
to identify Python supported versions.
- In "DB_ENV->rep_set_timeout()" and "DB_ENV->rep_get_timeout()",
support flags "DB_REP_LEASE_TIMEOUT".
- In "DB_ENV->rep_set_timeout()" and "DB_ENV->rep_get_timeout()",
support flags "DB_REP_HEARTBEAT_MONITOR" and
"DB_REP_HEARTBEAT_SEND". These flags are used in the Replication
Manager framework, ignored if using Base Replication.
- Implements "DB->exists()".
- Add support for "DB_IMMUTABLE_KEY" flag.
- Add support for "DB_REP_LOCKOUT" exception.
- Support returning a list of strings in "associate()"
callback. (Kung Phu)
- Testsuite and Python 3.0 compatibility for "associate()"
returning a list. In particular, in Python 3.0 the list
must contain bytes.
- Implements "DBEnv->fileid_reset()". (Duncan Findlay)
- Implements "DB->compact()". (Gregory P. Smith)
Berkeley DB 4.6 implementation is buggy, so we only
support this function from Berkeley DB 4.7 and newer.
We also support related flags "DB_FREELIST_ONLY"
and "DB_FREE_SPACE".
- bsddb3-4.7.3: Integrated with Python 2.6.
Testsuite verified in Unix 32 bit Python 2.3-2.6 and 3.0rc1, and Berkeley DB 4.0-4.7. (20081003)
This release is integrated in Python 2.6.
This release is compatible with Python 3.0rc1. But, beware, the API can change in the future,
specially in the unicode/bytes interface.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Available in PYPI. Changes:
- "private" is a keyword in C++. (Duncan Grisby)
- setup.py should install "bsddb.h". (Duncan Grisby)
- "DB_remove" memory corruption & crash. (Duncan Grisby)
- Under Python 3.0, you can't use string keys/values, but
bytes ones. Print the right error message.
- "DB.has_key()" allowed transactions as a positional parameter.
We allow, now, transactions as a keyword parameter also, as
documented.
- Correct "DB.associate()" parameter order in the documentation.
- "DB.append()" recognizes "txn" both as a positional and a
keyword parameter.
- Small fix in "dbshelve" for compatibility with Python 3.0.
- A lot of changes in "dbtables" for compatibility with Python 3.0.
- Huge work making the testsuite compatible with Python 3.0.
- In some cases the C module returned Unicode strings under
Python 3.0. It should return "bytes", ALWAYS. Solved.
- Remove a dict.has_key() use to silence a warning raised under
Python2.6 -3 parameter. Python SVN r65391, Brett Cannon.
- Solve some memory leaks - Neal Norwitz
- If DBEnv creation fails, library can crash. (Victor Stinner)
- Raising exceptions while doing a garbage collection
will kill the interpreter. (Victor Stinner)
- Crash in "DB.verify()". Noted by solsTiCe d'Hiver.
- bsddb3-4.7.2: RELEASED. (20080807).
Testsuite verified in Unix 32 bit Python 2.3-2.6b2 and Berkeley DB 4.0-4.7.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Available in PYPI. Changes:
- Solved a race condition in Replication Manager testcode.
- Changing any python code, automatically regenerates the
Python3 version. The master version is Python2.
- Compatibility with Python 3.0.
- Solved a crash when DB handle creation fails.
STINNER Victor - http://bugs.python.org/issue3307
- Improve internal error checking, as suggested by Neal Norwitz
when reviewing commit 63207 in Python SVN.
- Routines without parameters should be defined so, as
suggested by Neal Norwitz when reviewing commit 63207 in Python SVN.
The resulting code is (marginally) faster, smaller and clearer.
- Routines with a simple object parameter are defines so, as
suggested by Neal Norwitz when reviewing commit 63207 in Python SVN.
The resulting code is (marginally) faster, smaller and clearer.
- Routines taking objects as arguments can parse them better, as
suggested by Neal Norwitz when reviewing commit 63207 in Python SVN.
The resulting code is (marginally) faster, smaller and clearer.
- Improve testsuite behaviour under MS Windows.
- Use ABC (Abstract Base Classes) under Python 2.6 and 3.0.
- Support for "relative imports".
- Replication testcode behaves better in heavily loaded machines.
- bsddb3-4.7.1: RELEASED. (20080702).
Testsuite verified in Unix 32 bit Python 2.3-2.6b1 and Berkeley DB 4.0-4.7.
If you are going to use replication (Replication Manager or Base Replication),
you should use Berkeley DB 4.6 or up. Previous Berkeley DB versions are
unsupported, when using these functionalities.
Available in PYPI. Changes:
- Workaround a problem with un-initialized threads with the
replication callback.
- Export "DBRepUnavailError" exception.
- Get rid of Berkeley DB 3.3 support. Rationale:
http://mailman.jcea.es/pipermail/pybsddb/2008-March/000019.html
- Better integration between Python test framework and bsddb3.
- Improved Python 3.0 support in the C code.
- Iteration over the database, using the legacy interface, now
raises a RuntimeError if the database changes while iterating.
http://bugs.python.org/issue2669 - gregory.p.smith
- Create "set_private()" and "get_private()" methods for DB and DBEnv
objects, to allow applications to link an arbitrary object to
a DB/DBEnv. Useful for callbacks.
- Support some more base replication calls: "DB_ENV->rep_start",
"DB_ENV->rep_sync", "DB_ENV->rep_set_config", "DB_ENV->rep_get_config",
"DB_ENV->rep_set_limit", "DB_ENV->rep_get_limit",
"DB_ENV->rep_set_request", "DB_ENV->rep_get_request".
- Support more base replication calls: "DB_ENV->rep_elect",
"DB_ENV->rep_set_transport" and "DB_ENV->rep_process_message".
Support also related flags.
- bsddb3-4.7.0: RELEASED. (20080522).
Testsuite verified in Unix 32 bit Python 2.3-2.6a3 and Berkeley DB 4.0-4.7.
bsddb3 4.7.0 compiles against Berkeley DB 4.0-4.7. If you are upgrading your
Berkeley DB environment at the same time, be sure
to read the BDB upgrade notes carefully.
From this release, the only supported Berkeley DB versions are 4.x.
Support for Berkeley DB 3.3 is deprecated and will be deleted.
Mailing list thread discussing this.
Available in PYPI. Changes:
- Support for Berkeley DB 4.7.
- Support "DB_ENV->log_set_config", and related flags.
- Complete the Berkeley DB Replication Manager support:
"DB_ENV->repmgr_site_list" and related flags.
"DB_ENV->repmgr_stat", "DB_ENV->repmgr_stat_print" and related flags.
- Solved an old crash when building with debug python. (Neal Norwitz)
- Extend the testsuite driver to check also against Python 2.6 (a3).
- Support for RPC client service.
- bsddb3-4.6.5: The work on
this release is transfered to 4.7.0, since Oracle just published
Berkeley DB 4.7.25. (20080521)
- bsddb3-4.6.4: RELEASED. (20080426).
Testsuite verified in Unix 32 bit Python 2.3-2.5 and Berkeley DB 4.0-4.6.
If you are going to use the Replication Manager, you should use
Berkeley DB 4.6 or up.
Available in PYPI. Changes:
- Basic support for Berkeley DB Replication Manager.
- Support for a few replication calls, for benefice of Berkeley DB
Replication Manager: "DB_ENV->rep_set_priority",
"DB_ENV->rep_get_priority", "DB_ENV->rep_set_nsites",
"DB_ENV->rep_get_nsites", "DB_ENV->rep_set_timeout",
"DB_ENV->rep_get_timeout".
- Implemented "DB_ENV->set_event_notify" and related flags.
- Export flags related to replication timeouts.
- Export "DBRepHandleDeadError" exception.
- Implemented "DB_ENV->set_verbose", "DB_ENV->get_verbose"
and related flags.
- Implemented "DB_ENV->get_lg_max".
- Improved performance and coverage of following tests: lock,
threaded ConcurrentDataStore, threaded simple locks, threaded
transactions.
- New exported flags: "DB_LOCK_EXPIRE" and "DB_LOCK_MAXWRITE".
- bsddb3-4.6.3: RELEASED. (20080403).
Testsuite verified in Unix 32 bit Python 2.3-2.5 and Berkeley DB 4.0-4.6.
Available in PYPI. Changes:
- Be sure all DBEnv/DB paths in the TestSuite are generated in a
way compatible with launching the tests in multiple
threads/processes.
- Move all the "assert" in the TestSuite to the version in the
framework. This is very convenient, for example, to generate the
final report, or better automation.
- Implements "dbenv.log_flush()".
- Regression: bug when creating a transaction and its
parent is explicitly set to 'None'.
- Regression: bug when duplicationg cursors. Solved.
- Provide "dbenv.txn_recover()" and "txn.discard()", for fully
support recovery of distributed transactions. Any user of this
service should use Berkeley DB 4.5 or up.
- If a transaction is in "prepare" or "recover" state, we MUST NOT
abort it implicitly if the transaction goes out of scope, it is
garbaged collected, etc. Better to leak than sorry.
- In the previous case, we don't show any warning either.
- Export "DB_XIDDATASIZE", for GID of distributed transactions.
- If "db_seq_t" and PY_LONG_LONG are not compatible, compiler
should show a warning while compiling, and the generated code
would be incorrect but safe to use. No crash. Added sanity
check in the testunit to verify this is not the case, and
the datatypes are 64 bit width in fact.
- Solve a compilation warning when including "bsddb.h"
in other projects. (George Feinberg)
- bsddb3-4.6.2: RELEASED. (20080325).
Testsuite verified in Unix 32 bit Python 2.3-2.5 and Berkeley DB 4.0-4.6.
Available in PYPI. Changes:
- Support for MVCC (MultiVersion Concurrency Control).
- Support for DB_DSYNC_LOG, DB_DSYNC_DB and DB_OVERWRITE flags.
- Move old documentation to ReST format. This is important for several
reasons, notably to be able to integrate the documentation "as is"
in python official docs (from Python 2.6).
- Don't include Berkeley DB documentation. Link to the online version.
- DBSequence objects documented.
- DBSequence.get_key() didn't check for parameters. Fixed.
- If a DB is closed, its children DBSequences will be
closed also.
- To be consistent with other close methods, you can call
"DBSequence.close()" several times without error.
- If a Sequence is opened inside a transaction, it will be
automatically closed if the transaction is aborted. If the
transaction is committed and it is actually a subtransaction, the
sequence will be inherited by the parent transaction.
- Be sure "db_seq_t" and "long long" are compatible.
Disabled because MS Windows issues to be investigated.
- Documented the already available DBEnv methods: "dbremove",
"dbrename", "set_encrypt", "set_timeout", "set_shm_key",
"lock_id_free", "set_tx_timestamp", "lsn_reset" and "log_stat".
- Completed and documented "DBEnv.txn_stat()".
- Completed and documented "DBEnv.lock_stat()".
- Documented the already available DB methods: "set_encrypt", "pget".
- Completed documentation of DB methods: "associate", "open".
- Completed and documented "DB.stat()".
- Documented the already available DBCursor methods: "pget" (several
flavours).
- Completed documentation of DBCursor methods: "consume", "join_item".
- bsddb3-4.6.1: RELEASED (20080310).
Testsuite verified in 32 bit Python 2.3-2.5 and Berkeley DB 4.0-4.6.
Available in PYPI. Changes:
- 'egg' (setuptools) support.
- Environments, database handles and cursors are
maintained in a logical tree. Closing any element
of the tree, implicitly closes its children.
- Transactions are managed in a logical tree. When
aborting transactions, enclosed db handles, cursors
and transactions, are closed. If transaction commits,
the enclosed db handles are "inherited" by the parent
transaction/environment.
- Solved a bug when a DBEnv goes out of scope
without closing first.
- Add transactions to the management of closing
of nested objects. (not completed yet!)
- Fix memory leaks.
- Previous versions were inconsistent when key or
value were "" (the null string), according to
opening the database in thread safe mode or not.
In one case the lib gives "" and in the other
it gives None.
This section documents the release procedure, fundamentally to serve as a checklist
to myself. Suggestions welcomed.
This section documents the procedure used to update Python SVN repository
with current pybsddb code, fundamentally to serve as a checklist
to myself. Suggestions welcomed.