bsddb.btopen()

A

Anthony McDonald

PythonWin 2.3 (#46, Jul 29 2003, 18:54:32) [MSC v.1200 32 bit (Intel)] on
win32.
Portions Copyright 1994-2001 Mark Hammond ([email protected]) - see
'Help/About PythonWin' for further copyright information..... if i == 5:
.... pass
.... else:
.... my_data['%d'%i] = '%d'% (i*i)
....
my_data.keys() ['0', '1', '2', '3', '4', '6', '7', '8', '9']
my_data.sync()

Now heres where my problem is.

The documentation explicitly states that a btopen database when asked to
locate a key that doesn't exist in the dataset, will return the next sorted
key from the dataset.

So my_data.set_location('5') should return as if I'd called
my_data.set_location('6')Traceback (most recent call last):
File "<interactive input>", line 1, in ?
File "C:\Python23\lib\bsddb\__init__.py", line 117, in set_location
return self.dbc.set(key)
DBNotFoundError: (-30991, 'DB_NOTFOUND: No matching key/data pair found')

Okay maybe it has positioned the cursor, but is just raising the exception
to politely tell me that I'm not pointing at the key I asked for. So
my_data.previous() will return the key/data pair for key "4".
('9', '81')

Okay its pointing at the end of the database. Erm thats not as advertised.

Okay whats broken? Is the documentation wrong? Is my version of Python
wrong?, or do I need to drink some more coffee?

TonyM
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top