resolve sqldocstore postgres compatibility issue

This commit is contained in:
Alex Lee 2025-03-15 16:46:54 -07:00
parent 91b0ea385c
commit 40979a0063

View File

@ -184,9 +184,8 @@ class SQLStore(BaseStore[str, bytes]):
LangchainKeyValueStores.namespace == self.namespace, LangchainKeyValueStores.namespace == self.namespace,
) )
) )
for v in await session.scalars(stmt): results = session.execute(stmt).all()
result[v.key] = v.value return [result[0].value for result in results]
return [result.get(key) for key in keys]
def mget(self, keys: Sequence[str]) -> List[Optional[bytes]]: def mget(self, keys: Sequence[str]) -> List[Optional[bytes]]:
result = {} result = {}
@ -198,28 +197,27 @@ class SQLStore(BaseStore[str, bytes]):
LangchainKeyValueStores.namespace == self.namespace, LangchainKeyValueStores.namespace == self.namespace,
) )
) )
for v in session.scalars(stmt): results = session.execute(stmt).all()
result[v.key] = v.value return [result[0].value for result in results]
return [result.get(key) for key in keys]
async def amset(self, key_value_pairs: Sequence[Tuple[str, bytes]]) -> None: async def amset(self, key_value_pairs: Sequence[Tuple[str, bytes]], encoding: str = 'utf8') -> None:
async with self._make_async_session() as session: async with self._make_async_session() as session:
await self._amdelete([key for key, _ in key_value_pairs], session) await self._amdelete([key for key, _ in key_value_pairs], session)
session.add_all( session.add_all(
[ [
LangchainKeyValueStores(namespace=self.namespace, key=k, value=v) LangchainKeyValueStores(namespace=self.namespace, key=k, value=bytearray(v, encoding))
for k, v in key_value_pairs for k, v in key_value_pairs
] ]
) )
await session.commit() await session.commit()
def mset(self, key_value_pairs: Sequence[Tuple[str, bytes]]) -> None: def mset(self, key_value_pairs: Sequence[Tuple[str, bytes]], , encoding: str = 'utf8') -> None:
values: Dict[str, bytes] = dict(key_value_pairs) values: Dict[str, bytes] = dict(key_value_pairs)
with self._make_sync_session() as session: with self._make_sync_session() as session:
self._mdelete(list(values.keys()), session) self._mdelete(list(values.keys()), session)
session.add_all( session.add_all(
[ [
LangchainKeyValueStores(namespace=self.namespace, key=k, value=v) LangchainKeyValueStores(namespace=self.namespace, key=k, value=bytearray(v, encoding))
for k, v in values.items() for k, v in values.items()
] ]
) )