diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
commit | 458120dd40db6b4df55a4e96b650e16798ef06a0 (patch) | |
tree | 8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Doc/lib/libbsddb.tex | |
parent | 3a742c699f6806c1145aea5149bf15de15a0afd7 (diff) |
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Doc/lib/libbsddb.tex')
-rw-r--r-- | sys/src/cmd/python/Doc/lib/libbsddb.tex | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Doc/lib/libbsddb.tex b/sys/src/cmd/python/Doc/lib/libbsddb.tex new file mode 100644 index 000000000..ae4292318 --- /dev/null +++ b/sys/src/cmd/python/Doc/lib/libbsddb.tex @@ -0,0 +1,208 @@ +\section{\module{bsddb} --- + Interface to Berkeley DB library} + +\declaremodule{extension}{bsddb} +\modulesynopsis{Interface to Berkeley DB database library} +\sectionauthor{Skip Montanaro}{skip@mojam.com} + + +The \module{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 \function{marshal.dumps()} or +\function{pickle.dumps()}. + +The \module{bsddb} module requires a Berkeley DB library version from +3.3 thru 4.5. + +\begin{seealso} + \seeurl{http://pybsddb.sourceforge.net/} + {The website with documentation for the \module{bsddb.db} + Python Berkeley DB interface that closely mirrors the object + oriented interface provided in Berkeley DB 3 and 4.} + + \seeurl{http://www.oracle.com/database/berkeley-db/} + {The Berkeley DB library.} +\end{seealso} + +A more modern DB, DBEnv and DBSequence object interface is available in the +\module{bsddb.db} module which closely matches the Berkeley DB C API +documented at the above URLs. Additional features provided by the +\module{bsddb.db} API include fine tuning, transactions, logging, and +multiprocess concurrent database access. + +The following is a description of the legacy \module{bsddb} interface +compatible with the old Python bsddb module. Starting in Python 2.5 this +interface should be safe for multithreaded access. The \module{bsddb.db} +API is recommended for threading users as it provides better control. + +The \module{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. + +\begin{funcdesc}{hashopen}{filename\optional{, flag\optional{, + mode\optional{, pgsize\optional{, + ffactor\optional{, nelem\optional{, + cachesize\optional{, lorder\optional{, + hflags}}}}}}}}} +Open the hash format file named \var{filename}. Files never intended +to be preserved on disk may be created by passing \code{None} as the +\var{filename}. The optional +\var{flag} identifies the mode used to open the file. It may be +\character{r} (read only), \character{w} (read-write) , +\character{c} (read-write - create if necessary; the default) or +\character{n} (read-write - truncate to zero length). The other +arguments are rarely used and are just passed to the low-level +\cfunction{dbopen()} function. Consult the Berkeley DB documentation +for their use and interpretation. +\end{funcdesc} + +\begin{funcdesc}{btopen}{filename\optional{, flag\optional{, +mode\optional{, btflags\optional{, cachesize\optional{, maxkeypage\optional{, +minkeypage\optional{, pgsize\optional{, lorder}}}}}}}}} + +Open the btree format file named \var{filename}. Files never intended +to be preserved on disk may be created by passing \code{None} as the +\var{filename}. The optional +\var{flag} identifies the mode used to open the file. It may be +\character{r} (read only), \character{w} (read-write), +\character{c} (read-write - create if necessary; the default) or +\character{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. +\end{funcdesc} + +\begin{funcdesc}{rnopen}{filename\optional{, flag\optional{, mode\optional{, +rnflags\optional{, cachesize\optional{, pgsize\optional{, lorder\optional{, +rlen\optional{, delim\optional{, source\optional{, pad}}}}}}}}}}} + +Open a DB record format file named \var{filename}. Files never intended +to be preserved on disk may be created by passing \code{None} as the +\var{filename}. The optional +\var{flag} identifies the mode used to open the file. It may be +\character{r} (read only), \character{w} (read-write), +\character{c} (read-write - create if necessary; the default) or +\character{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. +\end{funcdesc} + + +\begin{notice} +Beginning in 2.3 some \UNIX{} versions of Python may have a \module{bsddb185} +module. This is present \emph{only} to allow backwards compatibility with +systems which ship with the old Berkeley DB 1.85 database library. The +\module{bsddb185} module should never be used directly in new code. +\end{notice} + + +\begin{seealso} + \seemodule{dbhash}{DBM-style interface to the \module{bsddb}} +\end{seealso} + +\subsection{Hash, BTree and Record Objects \label{bsddb-objects}} + +Once instantiated, hash, btree and record objects support +the same methods as dictionaries. In addition, they support +the methods listed below. +\versionchanged[Added dictionary methods]{2.3.1} + +\begin{methoddesc}{close}{} +Close the underlying file. The object can no longer be accessed. Since +there is no open \method{open} method for these objects, to open the file +again a new \module{bsddb} module open function must be called. +\end{methoddesc} + +\begin{methoddesc}{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. +\end{methoddesc} + +\begin{methoddesc}{has_key}{key} +Return \code{1} if the DB file contains the argument as a key. +\end{methoddesc} + +\begin{methoddesc}{set_location}{key} +Set the cursor to the item indicated by \var{key} and return a tuple +containing the key and its value. For binary tree databases (opened +using \function{btopen()}), if \var{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, +\exception{KeyError} will be raised if \var{key} is not found in the +database. +\end{methoddesc} + +\begin{methoddesc}{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 \exception{bsddb.error} if the database is empty. +\end{methoddesc} + +\begin{methoddesc}{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. +\end{methoddesc} + +\begin{methoddesc}{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 \function{hashopen()}). +\end{methoddesc} + +\begin{methoddesc}{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 \function{hashopen()}). +This method raises \exception{bsddb.error} if the database is empty. +\end{methoddesc} + +\begin{methoddesc}{sync}{} +Synchronize the database on disk. +\end{methoddesc} + +Example: + +\begin{verbatim} +>>> import bsddb +>>> db = bsddb.btopen('/tmp/spam.db', 'c') +>>> for i in range(10): db['%d'%i] = '%d'% (i*i) +... +>>> 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') +>>> db.previous() +('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 +\end{verbatim} |