class Index(object): def __init__(self, database, table, key): self.key = key self.table = table self.database = database self.btree = Tree(self.database, self.table, self.key) self.db_file = db_file_path(DATA_META_DB) def create(self, value, data_offset): # key = to_bytes(key) value = to_bytes(value) # table = to_bytes(table) # database = to_bytes(database) index = IndexStruct() # index.database = self.database # index.table = self.table # index.key = self.key index.value = value index.offset = 0 index.data_offset = data_offset self.btree.add(index) self.btree.saveTree() # with open(self.db_file, "ab+") as f: # index.offset = f.tell() # f.write(bytes(index)) def get(self, value): # if not os.path.exists(self.db_file): # return None # key = to_bytes(key) # value = to_bytes(value) # table = to_bytes(table) # database = to_bytes(database) index = self.btree.find(value) # index = None # with open(self.db_file, "rb") as f: # content = f.read(ctypes.sizeof(IndexStruct)) # while content: # index = IndexStruct.from_buffer_copy(content) # if index.database == database and index.table == table and index.key == key and index.value == value: # break # content = f.read(ctypes.sizeof(IndexStruct)) # index = None return index
from btree import Node, Tree tree = Tree() tree.add(3) tree.add(4) tree.add(0) tree.add(8) tree.add(2) tree.printTree() print(tree.height())