dbobj.py 11 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
    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)
58 59 60
    if db.version() < (4,5):
        def set_lk_max(self, *args, **kwargs):
            return apply(self._cobj.set_lk_max, args, kwargs)
61 62 63 64 65 66 67 68
    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
69 70
    def set_timeout(self, *args, **kwargs):
        return apply(self._cobj.set_timeout, args, kwargs)
71 72 73 74 75 76 77 78 79 80
    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)
81 82
    def set_tx_timestamp(self, *args, **kwargs):
        return apply(self._cobj.set_tx_timestamp, args, kwargs)
83 84 85 86 87 88 89 90 91 92 93 94
    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)
95 96 97 98

    def set_get_returns_none(self, *args, **kwargs):
        return apply(self._cobj.set_get_returns_none, args, kwargs)

99
    if db.version() >= (4,0):
Tim Peters's avatar
Tim Peters committed
100 101
        def log_stat(self, *args, **kwargs):
            return apply(self._cobj.log_stat, args, kwargs)
102

103 104 105 106 107 108 109 110
    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)

111
    if db.version() >= (4,4):
Tim Peters's avatar
Tim Peters committed
112 113
        def lsn_reset(self, *args, **kwargs):
            return apply(self._cobj.lsn_reset, args, kwargs)
114

115

116
class DB(DictMixin):
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
    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)
149 150
    def pget(self, *args, **kwargs):
        return apply(self._cobj.pget, args, kwargs)
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
    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)
179 180
    def set_bt_compare(self, *args, **kwargs):
        return apply(self._cobj.set_bt_compare, args, kwargs)
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
    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)
217 218 219 220

    if db.version() >= (4,1):
        def set_encrypt(self, *args, **kwargs):
            return apply(self._cobj.set_encrypt, args, kwargs)
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254


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

    def close(self, *args, **kwargs):
        return apply(self._cobj.close, args, kwargs)
    def get(self, *args, **kwargs):
        return apply(self._cobj.get, args, kwargs)
    def get_dbp(self, *args, **kwargs):
        return apply(self._cobj.get_dbp, args, kwargs)
    def get_key(self, *args, **kwargs):
        return apply(self._cobj.get_key, args, kwargs)
    def init_value(self, *args, **kwargs):
        return apply(self._cobj.init_value, 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)
    def stat(self, *args, **kwargs):
        return apply(self._cobj.stat, 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_range(self, *args, **kwargs):
        return apply(self._cobj.set_range, args, kwargs)
    def get_cachesize(self, *args, **kwargs):
        return apply(self._cobj.get_cachesize, args, kwargs)
    def get_flags(self, *args, **kwargs):
        return apply(self._cobj.get_flags, args, kwargs)
    def get_range(self, *args, **kwargs):
        return apply(self._cobj.get_range, args, kwargs)