MCPcopy Create free account
hub / github.com/NanGePlus/LightRAGTest / OracleKVStorage

Class OracleKVStorage

LightRAG/lightrag/kg/oracle_impl.py:168–285  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

166
167@dataclass
168class OracleKVStorage(BaseKVStorage):
169 # should pass db object to self.db
170 def __post_init__(self):
171 self._data = {}
172 self._max_batch_size = self.global_config["embedding_batch_num"]
173
174 ################ QUERY METHODS ################
175
176 async def get_by_id(self, id: str) -> Union[dict, None]:
177 """根据 id 获取 doc_full 数据."""
178 SQL = SQL_TEMPLATES["get_by_id_" + self.namespace]
179 params = {"workspace": self.db.workspace, "id": id}
180 # print("get_by_id:"+SQL)
181 res = await self.db.query(SQL, params)
182 if res:
183 data = res # {"data":res}
184 # print (data)
185 return data
186 else:
187 return None
188
189 # Query by id
190 async def get_by_ids(self, ids: list[str], fields=None) -> Union[list[dict], None]:
191 """根据 id 获取 doc_chunks 数据"""
192 SQL = SQL_TEMPLATES["get_by_ids_" + self.namespace].format(
193 ids=",".join([f"'{id}'" for id in ids])
194 )
195 params = {"workspace": self.db.workspace}
196 # print("get_by_ids:"+SQL)
197 # print(params)
198 res = await self.db.query(SQL, params, multirows=True)
199 if res:
200 data = res # [{"data":i} for i in res]
201 # print(data)
202 return data
203 else:
204 return None
205
206 async def filter_keys(self, keys: list[str]) -> set[str]:
207 """过滤掉重复内容"""
208 SQL = SQL_TEMPLATES["filter_keys"].format(
209 table_name=N_T[self.namespace], ids=",".join([f"'{id}'" for id in keys])
210 )
211 params = {"workspace": self.db.workspace}
212 try:
213 await self.db.query(SQL, params)
214 except Exception as e:
215 logger.error(f"Oracle database error: {e}")
216 print(SQL)
217 print(params)
218 res = await self.db.query(SQL, params, multirows=True)
219 data = None
220 if res:
221 exist_keys = [key["id"] for key in res]
222 data = set([s for s in keys if s not in exist_keys])
223 else:
224 exist_keys = []
225 data = set([s for s in keys if s not in exist_keys])

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected