dbobj.py 8.99 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#-------------------------------------------------------------------------
#  This file contains real Python object wrappers for DB and DBEnv
#  C "objects" that can be usefully subclassed.  The previous SWIG
#  based interface allowed this thanks to SWIG's shadow classes.
#   --  Gregory P. Smith
#-------------------------------------------------------------------------
#
# (C) Copyright 2001  Autonomous Zone Industries
#
# License:  This is free software.  You may use this software for any
#           purpose including modification/redistribution, so long as
#           this header remains intact and that you do not claim any
#           rights of ownership or authorship of this software.  This
#           software has been tested, but no warranty is expressed or
#           implied.
#

Gregory P. Smith's avatar
Gregory P. Smith committed
18 19 20 21 22 23
#
# TODO it would be *really nice* to have an automatic shadow class populator
# so that new methods don't need to be added  here manually after being
# added to _bsddb.c.
#

24
import db
25 26 27 28 29 30

try:
    from UserDict import DictMixin
except ImportError:
    # DictMixin is new in Python 2.3
    class DictMixin: pass
31 32 33 34 35 36 37 38 39 40 41

class DBEnv:
    def __init__(self, *args, **kwargs):
        self._cobj = apply(db.DBEnv, args, kwargs)

    def close(self, *args, **kwargs):
        return apply(self._cobj.close, args, kwargs)
    def open(self, *args, **kwargs):
        return apply(self._cobj.open, args, kwargs)
    def remove(self, *args, **kwargs):
        return apply(self._cobj.remove, args, kwargs)
42 43
    def set_shm_key(self, *args, **kwargs):
        return apply(self._cobj.set_shm_key, args, kwargs)
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
    def set_cachesize(self, *args, **kwargs):
        return apply(self._cobj.set_cachesize, args, kwargs)
    def set_data_dir(self, *args, **kwargs):
        return apply(self._cobj.set_data_dir, args, kwargs)
    def set_flags(self, *args, **kwargs):
        return apply(self._cobj.set_flags, args, kwargs)
    def set_lg_bsize(self, *args, **kwargs):
        return apply(self._cobj.set_lg_bsize, args, kwargs)
    def set_lg_dir(self, *args, **kwargs):
        return apply(self._cobj.set_lg_dir, args, kwargs)
    def set_lg_max(self, *args, **kwargs):
        return apply(self._cobj.set_lg_max, args, kwargs)
    def set_lk_detect(self, *args, **kwargs):
        return apply(self._cobj.set_lk_detect, args, kwargs)
    def set_lk_max(self, *args, **kwargs):
        return apply(self._cobj.set_lk_max, args, kwargs)
    def set_lk_max_locks(self, *args, **kwargs):
        return apply(self._cobj.set_lk_max_locks, args, kwargs)
    def set_lk_max_lockers(self, *args, **kwargs):
        return apply(self._cobj.set_lk_max_lockers, args, kwargs)
    def set_lk_max_objects(self, *args, **kwargs):
        return apply(self._cobj.set_lk_max_objects, args, kwargs)
    def set_mp_mmapsize(self, *args, **kwargs):
        return apply(self._cobj.set_mp_mmapsize, args, kwargs)
Gregory P. Smith's avatar
Gregory P. Smith committed
68 69
    def set_timeout(self, *args, **kwargs):
        return apply(self._cobj.set_timeout, args, kwargs)
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
    def set_tmp_dir(self, *args, **kwargs):
        return apply(self._cobj.set_tmp_dir, args, kwargs)
    def txn_begin(self, *args, **kwargs):
        return apply(self._cobj.txn_begin, args, kwargs)
    def txn_checkpoint(self, *args, **kwargs):
        return apply(self._cobj.txn_checkpoint, args, kwargs)
    def txn_stat(self, *args, **kwargs):
        return apply(self._cobj.txn_stat, args, kwargs)
    def set_tx_max(self, *args, **kwargs):
        return apply(self._cobj.set_tx_max, args, kwargs)
    def lock_detect(self, *args, **kwargs):
        return apply(self._cobj.lock_detect, args, kwargs)
    def lock_get(self, *args, **kwargs):
        return apply(self._cobj.lock_get, args, kwargs)
    def lock_id(self, *args, **kwargs):
        return apply(self._cobj.lock_id, args, kwargs)
    def lock_put(self, *args, **kwargs):
        return apply(self._cobj.lock_put, args, kwargs)
    def lock_stat(self, *args, **kwargs):
        return apply(self._cobj.lock_stat, args, kwargs)
    def log_archive(self, *args, **kwargs):
        return apply(self._cobj.log_archive, args, kwargs)
    def set_get_returns_none(self, *args, **kwargs):
        return apply(self._cobj.set_get_returns_none, args, kwargs)

95 96 97 98 99 100 101 102
    if db.version() >= (4,1):
        def dbremove(self, *args, **kwargs):
            return apply(self._cobj.dbremove, args, kwargs)
        def dbrename(self, *args, **kwargs):
            return apply(self._cobj.dbrename, args, kwargs)
        def set_encrypt(self, *args, **kwargs):
            return apply(self._cobj.set_encrypt, args, kwargs)

103

104
class DB(DictMixin):
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
    def __init__(self, dbenv, *args, **kwargs):
        # give it the proper DBEnv C object that its expecting
        self._cobj = apply(db.DB, (dbenv._cobj,) + args, kwargs)

    # TODO are there other dict methods that need to be overridden?
    def __len__(self):
        return len(self._cobj)
    def __getitem__(self, arg):
        return self._cobj[arg]
    def __setitem__(self, key, value):
        self._cobj[key] = value
    def __delitem__(self, arg):
        del self._cobj[arg]

    def append(self, *args, **kwargs):
        return apply(self._cobj.append, args, kwargs)
    def associate(self, *args, **kwargs):
        return apply(self._cobj.associate, args, kwargs)
    def close(self, *args, **kwargs):
        return apply(self._cobj.close, args, kwargs)
    def consume(self, *args, **kwargs):
        return apply(self._cobj.consume, args, kwargs)
    def consume_wait(self, *args, **kwargs):
        return apply(self._cobj.consume_wait, args, kwargs)
    def cursor(self, *args, **kwargs):
        return apply(self._cobj.cursor, args, kwargs)
    def delete(self, *args, **kwargs):
        return apply(self._cobj.delete, args, kwargs)
    def fd(self, *args, **kwargs):
        return apply(self._cobj.fd, args, kwargs)
    def get(self, *args, **kwargs):
        return apply(self._cobj.get, args, kwargs)
    def get_both(self, *args, **kwargs):
        return apply(self._cobj.get_both, args, kwargs)
    def get_byteswapped(self, *args, **kwargs):
        return apply(self._cobj.get_byteswapped, args, kwargs)
    def get_size(self, *args, **kwargs):
        return apply(self._cobj.get_size, args, kwargs)
    def get_type(self, *args, **kwargs):
        return apply(self._cobj.get_type, args, kwargs)
    def join(self, *args, **kwargs):
        return apply(self._cobj.join, args, kwargs)
    def key_range(self, *args, **kwargs):
        return apply(self._cobj.key_range, args, kwargs)
    def has_key(self, *args, **kwargs):
        return apply(self._cobj.has_key, args, kwargs)
    def items(self, *args, **kwargs):
        return apply(self._cobj.items, args, kwargs)
    def keys(self, *args, **kwargs):
        return apply(self._cobj.keys, args, kwargs)
    def open(self, *args, **kwargs):
        return apply(self._cobj.open, args, kwargs)
    def put(self, *args, **kwargs):
        return apply(self._cobj.put, args, kwargs)
    def remove(self, *args, **kwargs):
        return apply(self._cobj.remove, args, kwargs)
    def rename(self, *args, **kwargs):
        return apply(self._cobj.rename, args, kwargs)
    def set_bt_minkey(self, *args, **kwargs):
        return apply(self._cobj.set_bt_minkey, args, kwargs)
    def set_cachesize(self, *args, **kwargs):
        return apply(self._cobj.set_cachesize, args, kwargs)
    def set_flags(self, *args, **kwargs):
        return apply(self._cobj.set_flags, args, kwargs)
    def set_h_ffactor(self, *args, **kwargs):
        return apply(self._cobj.set_h_ffactor, args, kwargs)
    def set_h_nelem(self, *args, **kwargs):
        return apply(self._cobj.set_h_nelem, args, kwargs)
    def set_lorder(self, *args, **kwargs):
        return apply(self._cobj.set_lorder, args, kwargs)
    def set_pagesize(self, *args, **kwargs):
        return apply(self._cobj.set_pagesize, args, kwargs)
    def set_re_delim(self, *args, **kwargs):
        return apply(self._cobj.set_re_delim, args, kwargs)
    def set_re_len(self, *args, **kwargs):
        return apply(self._cobj.set_re_len, args, kwargs)
    def set_re_pad(self, *args, **kwargs):
        return apply(self._cobj.set_re_pad, args, kwargs)
    def set_re_source(self, *args, **kwargs):
        return apply(self._cobj.set_re_source, args, kwargs)
    def set_q_extentsize(self, *args, **kwargs):
        return apply(self._cobj.set_q_extentsize, args, kwargs)
    def stat(self, *args, **kwargs):
        return apply(self._cobj.stat, args, kwargs)
    def sync(self, *args, **kwargs):
        return apply(self._cobj.sync, args, kwargs)
    def type(self, *args, **kwargs):
        return apply(self._cobj.type, args, kwargs)
    def upgrade(self, *args, **kwargs):
        return apply(self._cobj.upgrade, args, kwargs)
    def values(self, *args, **kwargs):
        return apply(self._cobj.values, args, kwargs)
    def verify(self, *args, **kwargs):
        return apply(self._cobj.verify, args, kwargs)
    def set_get_returns_none(self, *args, **kwargs):
        return apply(self._cobj.set_get_returns_none, args, kwargs)
201 202 203 204

    if db.version() >= (4,1):
        def set_encrypt(self, *args, **kwargs):
            return apply(self._cobj.set_encrypt, args, kwargs)