def create_index_from_lmdb(self): # 遍历 lmdb_file = self.lmdb_file if os.path.isdir(lmdb_file): evn = lmdb.open(lmdb_file) wfp = evn.begin() annoy = AnnoyIndex(self.f) for key, value in wfp.cursor(): key = int(key) value = face_comm.str_to_embed(value) annoy.add_item(key,value) annoy.build(self.num_trees) annoy.save(self.annoy_index_path)
''' import lmdb import os import face_comm import pickle class face_lmdb: def add_embed_to_lmdb(self, id, vector): self.db_file = os.path.abspath(face_comm.get_conf('lmdb', 'lmdb_path')) id = str(id) evn = lmdb.open(self.db_file) wfp = evn.begin(write=True) print(vector.dtype) wfp.put(key=id.encode(), value=vector.tostring()) wfp.commit() evn.close() if __name__ == '__main__': #插入数据 embed = face_lmdb() embed.add_embed_to_lmdb(12, [1, 2, 0.888333, 0.12343430]) #遍历 evn = lmdb.open(embed.db_file) wfp = evn.begin() for key, value in wfp.cursor(): print(key, face_comm.str_to_embed(value))