Terry Jones wrote:
Usually you find database records by means of the record's key. However, the key that you use for your record will not always contain the information required to provide you with rapid access to the data that you want to retrieve.
Ah, okay, you do this with multiple BTrees in Zope, unless you want to swallow the whole ZCatalog...
For example, suppose your database contains records related to users. The key might be a string that is some unique identifier for the person, such as a user ID.
from BTrees.IOBTree import IOBTree chris = object() id2user = IOBTree() id2user[1234] = chris
is, by the information stored in the key), it may also on occasion want to location people by, say, their name.
from BTrees.OOBTree import OOBTree, OOSet name2user = OOBTree() name2user['chris'] = chris Now, if you have more than one value, you use a set: dan = object() age2user = OOBTree() age2user[27] = OOSet(chris,dan) Although, to be honest, if you're doing all this, you'll likely get more milleage out of the zcatalog than rolling it all yourself... cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk