2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
:mod:`bsddb` --- Interface to Berkeley DB library
|
|
|
|
=================================================
|
|
|
|
|
|
|
|
.. module:: bsddb
|
|
|
|
:synopsis: Interface to Berkeley DB database library
|
2007-12-08 11:26:16 -04:00
|
|
|
.. sectionauthor:: Skip Montanaro <skip@pobox.com>
|
2007-08-15 11:28:01 -03:00
|
|
|
|
2008-09-05 15:33:51 -03:00
|
|
|
.. deprecated:: 2.6
|
|
|
|
The :mod:`bsddb` module has been deprecated for removal in Python 3.0.
|
|
|
|
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
The :mod:`bsddb` module provides an interface to the Berkeley DB library. Users
|
|
|
|
can create hash, btree or record based library files using the appropriate open
|
|
|
|
call. Bsddb objects behave generally like dictionaries. Keys and values must be
|
|
|
|
strings, however, so to use other objects as keys or to store other kinds of
|
|
|
|
objects the user must serialize them somehow, typically using
|
|
|
|
:func:`marshal.dumps` or :func:`pickle.dumps`.
|
|
|
|
|
2009-03-10 13:51:19 -03:00
|
|
|
The :mod:`bsddb` module requires a Berkeley DB library version from 4.0 thru
|
2008-05-24 18:21:23 -03:00
|
|
|
4.7.
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. seealso::
|
|
|
|
|
2008-05-24 18:21:23 -03:00
|
|
|
http://www.jcea.es/programacion/pybsddb.htm
|
2007-08-15 11:28:01 -03:00
|
|
|
The website with documentation for the :mod:`bsddb.db` Python Berkeley DB
|
|
|
|
interface that closely mirrors the object oriented interface provided in
|
2008-05-24 18:21:23 -03:00
|
|
|
Berkeley DB 4.x itself.
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
http://www.oracle.com/database/berkeley-db/
|
|
|
|
The Berkeley DB library.
|
|
|
|
|
|
|
|
A more modern DB, DBEnv and DBSequence object interface is available in the
|
|
|
|
:mod:`bsddb.db` module which closely matches the Berkeley DB C API documented at
|
|
|
|
the above URLs. Additional features provided by the :mod:`bsddb.db` API include
|
|
|
|
fine tuning, transactions, logging, and multiprocess concurrent database access.
|
|
|
|
|
|
|
|
The following is a description of the legacy :mod:`bsddb` interface compatible
|
|
|
|
with the old Python bsddb module. Starting in Python 2.5 this interface should
|
|
|
|
be safe for multithreaded access. The :mod:`bsddb.db` API is recommended for
|
|
|
|
threading users as it provides better control.
|
|
|
|
|
|
|
|
The :mod:`bsddb` module defines the following functions that create objects that
|
|
|
|
access the appropriate type of Berkeley DB file. The first two arguments of
|
|
|
|
each function are the same. For ease of portability, only the first two
|
|
|
|
arguments should be used in most instances.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: hashopen(filename[, flag[, mode[, pgsize[, ffactor[, nelem[, cachesize[, lorder[, hflags]]]]]]]])
|
|
|
|
|
|
|
|
Open the hash format file named *filename*. Files never intended to be
|
|
|
|
preserved on disk may be created by passing ``None`` as the *filename*. The
|
|
|
|
optional *flag* identifies the mode used to open the file. It may be ``'r'``
|
|
|
|
(read only), ``'w'`` (read-write) , ``'c'`` (read-write - create if necessary;
|
|
|
|
the default) or ``'n'`` (read-write - truncate to zero length). The other
|
|
|
|
arguments are rarely used and are just passed to the low-level :cfunc:`dbopen`
|
|
|
|
function. Consult the Berkeley DB documentation for their use and
|
|
|
|
interpretation.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: btopen(filename[, flag[, mode[, btflags[, cachesize[, maxkeypage[, minkeypage[, pgsize[, lorder]]]]]]]])
|
|
|
|
|
|
|
|
Open the btree format file named *filename*. Files never intended to be
|
|
|
|
preserved on disk may be created by passing ``None`` as the *filename*. The
|
|
|
|
optional *flag* identifies the mode used to open the file. It may be ``'r'``
|
|
|
|
(read only), ``'w'`` (read-write), ``'c'`` (read-write - create if necessary;
|
|
|
|
the default) or ``'n'`` (read-write - truncate to zero length). The other
|
|
|
|
arguments are rarely used and are just passed to the low-level dbopen function.
|
|
|
|
Consult the Berkeley DB documentation for their use and interpretation.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: rnopen(filename[, flag[, mode[, rnflags[, cachesize[, pgsize[, lorder[, rlen[, delim[, source[, pad]]]]]]]]]])
|
|
|
|
|
|
|
|
Open a DB record format file named *filename*. Files never intended to be
|
|
|
|
preserved on disk may be created by passing ``None`` as the *filename*. The
|
|
|
|
optional *flag* identifies the mode used to open the file. It may be ``'r'``
|
|
|
|
(read only), ``'w'`` (read-write), ``'c'`` (read-write - create if necessary;
|
|
|
|
the default) or ``'n'`` (read-write - truncate to zero length). The other
|
|
|
|
arguments are rarely used and are just passed to the low-level dbopen function.
|
|
|
|
Consult the Berkeley DB documentation for their use and interpretation.
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
Beginning in 2.3 some Unix versions of Python may have a :mod:`bsddb185` module.
|
|
|
|
This is present *only* to allow backwards compatibility with systems which ship
|
|
|
|
with the old Berkeley DB 1.85 database library. The :mod:`bsddb185` module
|
2008-05-09 23:47:54 -03:00
|
|
|
should never be used directly in new code. The module has been removed in
|
2008-05-10 11:48:49 -03:00
|
|
|
Python 3.0. If you find you still need it look in PyPI.
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. seealso::
|
|
|
|
|
|
|
|
Module :mod:`dbhash`
|
|
|
|
DBM-style interface to the :mod:`bsddb`
|
|
|
|
|
|
|
|
|
|
|
|
.. _bsddb-objects:
|
|
|
|
|
|
|
|
Hash, BTree and Record Objects
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
Once instantiated, hash, btree and record objects support the same methods as
|
|
|
|
dictionaries. In addition, they support the methods listed below.
|
|
|
|
|
|
|
|
.. versionchanged:: 2.3.1
|
|
|
|
Added dictionary methods.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.close()
|
|
|
|
|
|
|
|
Close the underlying file. The object can no longer be accessed. Since there
|
|
|
|
is no open :meth:`open` method for these objects, to open the file again a new
|
|
|
|
:mod:`bsddb` module open function must be called.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.keys()
|
|
|
|
|
|
|
|
Return the list of keys contained in the DB file. The order of the list is
|
|
|
|
unspecified and should not be relied on. In particular, the order of the list
|
|
|
|
returned is different for different file formats.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.has_key(key)
|
|
|
|
|
|
|
|
Return ``1`` if the DB file contains the argument as a key.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.set_location(key)
|
|
|
|
|
|
|
|
Set the cursor to the item indicated by *key* and return a tuple containing the
|
|
|
|
key and its value. For binary tree databases (opened using :func:`btopen`), if
|
|
|
|
*key* does not actually exist in the database, the cursor will point to the next
|
|
|
|
item in sorted order and return that key and value. For other databases,
|
|
|
|
:exc:`KeyError` will be raised if *key* is not found in the database.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.first()
|
|
|
|
|
|
|
|
Set the cursor to the first item in the DB file and return it. The order of
|
|
|
|
keys in the file is unspecified, except in the case of B-Tree databases. This
|
|
|
|
method raises :exc:`bsddb.error` if the database is empty.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.next()
|
|
|
|
|
|
|
|
Set the cursor to the next item in the DB file and return it. The order of
|
|
|
|
keys in the file is unspecified, except in the case of B-Tree databases.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.previous()
|
|
|
|
|
|
|
|
Set the cursor to the previous item in the DB file and return it. The order of
|
|
|
|
keys in the file is unspecified, except in the case of B-Tree databases. This
|
|
|
|
is not supported on hashtable databases (those opened with :func:`hashopen`).
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.last()
|
|
|
|
|
|
|
|
Set the cursor to the last item in the DB file and return it. The order of keys
|
|
|
|
in the file is unspecified. This is not supported on hashtable databases (those
|
|
|
|
opened with :func:`hashopen`). This method raises :exc:`bsddb.error` if the
|
|
|
|
database is empty.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: bsddbobject.sync()
|
|
|
|
|
|
|
|
Synchronize the database on disk.
|
|
|
|
|
|
|
|
Example::
|
|
|
|
|
|
|
|
>>> import bsddb
|
|
|
|
>>> db = bsddb.btopen('/tmp/spam.db', 'c')
|
|
|
|
>>> for i in range(10): db['%d'%i] = '%d'% (i*i)
|
Merged revisions 68133-68134,68141-68142,68145-68146,68148-68149,68159-68162,68166,68171-68174,68179,68195-68196,68210,68214-68215,68217-68222 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68133 | antoine.pitrou | 2009-01-01 16:38:03 +0100 (Thu, 01 Jan 2009) | 1 line
fill in actual issue number in tests
........
r68134 | hirokazu.yamamoto | 2009-01-01 16:45:39 +0100 (Thu, 01 Jan 2009) | 2 lines
Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open
file with `str' filename on Windows.
........
r68141 | benjamin.peterson | 2009-01-01 17:43:12 +0100 (Thu, 01 Jan 2009) | 1 line
fix highlighting
........
r68142 | benjamin.peterson | 2009-01-01 18:29:49 +0100 (Thu, 01 Jan 2009) | 2 lines
welcome to 2009, Python!
........
r68145 | amaury.forgeotdarc | 2009-01-02 01:03:54 +0100 (Fri, 02 Jan 2009) | 5 lines
#4801 _collections module fails to build on cygwin.
_PyObject_GC_TRACK is the macro version of PyObject_GC_Track,
and according to documentation it should not be used for extension modules.
........
r68146 | ronald.oussoren | 2009-01-02 11:44:46 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4472: "configure --enable-shared doesn't work on OSX"
........
r68148 | ronald.oussoren | 2009-01-02 11:48:31 +0100 (Fri, 02 Jan 2009) | 2 lines
Forgot to add a NEWS item in my previous checkin
........
r68149 | ronald.oussoren | 2009-01-02 11:50:48 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4780
........
r68159 | ronald.oussoren | 2009-01-02 15:48:17 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue 1627952
........
r68160 | ronald.oussoren | 2009-01-02 15:52:09 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue r1737832
........
r68161 | ronald.oussoren | 2009-01-02 16:00:05 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 1149804
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68172 | martin.v.loewis | 2009-01-02 21:32:55 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4075: Use OutputDebugStringW in Py_FatalError.
........
r68173 | martin.v.loewis | 2009-01-02 21:40:14 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4051: Prevent conflict of UNICODE macros in cPickle.
........
r68174 | benjamin.peterson | 2009-01-02 21:47:27 +0100 (Fri, 02 Jan 2009) | 1 line
fix compilation on non-Windows platforms
........
r68179 | raymond.hettinger | 2009-01-02 22:26:45 +0100 (Fri, 02 Jan 2009) | 1 line
Issue #4615. Document how to use itertools for de-duping.
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68214 | georg.brandl | 2009-01-03 20:44:48 +0100 (Sat, 03 Jan 2009) | 2 lines
Make indentation consistent.
........
r68215 | georg.brandl | 2009-01-03 21:15:14 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix role name.
........
r68217 | georg.brandl | 2009-01-03 21:30:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Add rstlint, a little tool to find subtle markup problems and inconsistencies in the Doc sources.
........
r68218 | georg.brandl | 2009-01-03 21:38:59 +0100 (Sat, 03 Jan 2009) | 2 lines
Recognize usage of the default role.
........
r68219 | georg.brandl | 2009-01-03 21:47:01 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix uses of the default role.
........
r68220 | georg.brandl | 2009-01-03 21:55:06 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove trailing whitespace.
........
r68221 | georg.brandl | 2009-01-03 22:04:55 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove tabs from the documentation.
........
r68222 | georg.brandl | 2009-01-03 22:11:58 +0100 (Sat, 03 Jan 2009) | 2 lines
Disable the line length checker by default.
........
2009-01-03 17:55:17 -04:00
|
|
|
...
|
2007-08-15 11:28:01 -03:00
|
|
|
>>> db['3']
|
|
|
|
'9'
|
|
|
|
>>> db.keys()
|
|
|
|
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
|
|
|
|
>>> db.first()
|
|
|
|
('0', '0')
|
|
|
|
>>> db.next()
|
|
|
|
('1', '1')
|
|
|
|
>>> db.last()
|
|
|
|
('9', '81')
|
|
|
|
>>> db.set_location('2')
|
|
|
|
('2', '4')
|
Merged revisions 68133-68134,68141-68142,68145-68146,68148-68149,68159-68162,68166,68171-68174,68179,68195-68196,68210,68214-68215,68217-68222 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68133 | antoine.pitrou | 2009-01-01 16:38:03 +0100 (Thu, 01 Jan 2009) | 1 line
fill in actual issue number in tests
........
r68134 | hirokazu.yamamoto | 2009-01-01 16:45:39 +0100 (Thu, 01 Jan 2009) | 2 lines
Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open
file with `str' filename on Windows.
........
r68141 | benjamin.peterson | 2009-01-01 17:43:12 +0100 (Thu, 01 Jan 2009) | 1 line
fix highlighting
........
r68142 | benjamin.peterson | 2009-01-01 18:29:49 +0100 (Thu, 01 Jan 2009) | 2 lines
welcome to 2009, Python!
........
r68145 | amaury.forgeotdarc | 2009-01-02 01:03:54 +0100 (Fri, 02 Jan 2009) | 5 lines
#4801 _collections module fails to build on cygwin.
_PyObject_GC_TRACK is the macro version of PyObject_GC_Track,
and according to documentation it should not be used for extension modules.
........
r68146 | ronald.oussoren | 2009-01-02 11:44:46 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4472: "configure --enable-shared doesn't work on OSX"
........
r68148 | ronald.oussoren | 2009-01-02 11:48:31 +0100 (Fri, 02 Jan 2009) | 2 lines
Forgot to add a NEWS item in my previous checkin
........
r68149 | ronald.oussoren | 2009-01-02 11:50:48 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4780
........
r68159 | ronald.oussoren | 2009-01-02 15:48:17 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue 1627952
........
r68160 | ronald.oussoren | 2009-01-02 15:52:09 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue r1737832
........
r68161 | ronald.oussoren | 2009-01-02 16:00:05 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 1149804
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68172 | martin.v.loewis | 2009-01-02 21:32:55 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4075: Use OutputDebugStringW in Py_FatalError.
........
r68173 | martin.v.loewis | 2009-01-02 21:40:14 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4051: Prevent conflict of UNICODE macros in cPickle.
........
r68174 | benjamin.peterson | 2009-01-02 21:47:27 +0100 (Fri, 02 Jan 2009) | 1 line
fix compilation on non-Windows platforms
........
r68179 | raymond.hettinger | 2009-01-02 22:26:45 +0100 (Fri, 02 Jan 2009) | 1 line
Issue #4615. Document how to use itertools for de-duping.
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68214 | georg.brandl | 2009-01-03 20:44:48 +0100 (Sat, 03 Jan 2009) | 2 lines
Make indentation consistent.
........
r68215 | georg.brandl | 2009-01-03 21:15:14 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix role name.
........
r68217 | georg.brandl | 2009-01-03 21:30:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Add rstlint, a little tool to find subtle markup problems and inconsistencies in the Doc sources.
........
r68218 | georg.brandl | 2009-01-03 21:38:59 +0100 (Sat, 03 Jan 2009) | 2 lines
Recognize usage of the default role.
........
r68219 | georg.brandl | 2009-01-03 21:47:01 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix uses of the default role.
........
r68220 | georg.brandl | 2009-01-03 21:55:06 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove trailing whitespace.
........
r68221 | georg.brandl | 2009-01-03 22:04:55 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove tabs from the documentation.
........
r68222 | georg.brandl | 2009-01-03 22:11:58 +0100 (Sat, 03 Jan 2009) | 2 lines
Disable the line length checker by default.
........
2009-01-03 17:55:17 -04:00
|
|
|
>>> db.previous()
|
2007-08-15 11:28:01 -03:00
|
|
|
('1', '1')
|
|
|
|
>>> for k, v in db.iteritems():
|
|
|
|
... print k, v
|
|
|
|
0 0
|
|
|
|
1 1
|
|
|
|
2 4
|
|
|
|
3 9
|
|
|
|
4 16
|
|
|
|
5 25
|
|
|
|
6 36
|
|
|
|
7 49
|
|
|
|
8 64
|
|
|
|
9 81
|
|
|
|
>>> '8' in db
|
|
|
|
True
|
|
|
|
>>> db.sync()
|
|
|
|
0
|
|
|
|
|