Зависит от ваших потребностей в индексировании, но когда все, что вам нужно - это доступность по идентификатору, вам, вероятно, не понадобится какой-либо модный пакет для индексирования.
Эти объекты будут добавлены в индекс btree, как только они будут сохранены в графе объектов zodb.
Ну, «добавить себя» означало бы, что они содержат ссылку на свое решение BTree / index. С другой стороны, вы говорите о том, «как только они будут сохранены», что подразумевает какую-то функцию «положить их в БД». Поэтому я предлагаю просто выполнить сохранение и индексирование объектов за один раз с помощью чего-то подобного:
def persist_obj(db, obj):
tree = db.root()['mybtree']
id = tree.maxKey() + 1
obj.id = id
tree[id] = obj
Если у вас есть обертка для вашей базы данных, естественным местом для этого будет помещение ее в функцию-член wour wrapper.