Community: Add bind variable support for oracle adb docloader (#30937)

PR title:
Community: Add bind variable support for oracle adb docloader
Description:
This PR adds support of using bind variable to oracle adb doc loader
class, including minor document change.
Issue:
N/A
Dependencies:
No new dependencies.
This commit is contained in:
xsai9101
2025-04-21 05:47:33 -07:00
committed by GitHub
parent 9418c0d8a5
commit 335f089d6a
2 changed files with 19 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
from typing import Any, Dict, List, Optional
from typing import Any, Dict, List, Optional, Union
from langchain_core.documents import Document
@@ -31,6 +31,7 @@ class OracleAutonomousDatabaseLoader(BaseLoader):
wallet_password: Optional[str] = None,
connection_string: Optional[str] = None,
metadata: Optional[List[str]] = None,
parameters: Optional[Union[list, tuple, dict]] = None,
):
"""
init method
@@ -44,6 +45,7 @@ class OracleAutonomousDatabaseLoader(BaseLoader):
:param wallet_password: password of wallet
:param connection_string: connection string to connect to adb instance
:param metadata: metadata used in document
:param parameters: bind variable to use in query
"""
# Mandatory required arguments.
self.query = query
@@ -67,6 +69,9 @@ class OracleAutonomousDatabaseLoader(BaseLoader):
# metadata column
self.metadata = metadata
# parameters, e.g bind variable
self.parameters = parameters
# dsn
self.dsn: Optional[str]
self._set_dsn()
@@ -96,7 +101,10 @@ class OracleAutonomousDatabaseLoader(BaseLoader):
cursor = connection.cursor()
if self.schema:
cursor.execute(f"alter session set current_schema={self.schema}")
cursor.execute(self.query)
if self.parameters:
cursor.execute(self.query, self.parameters)
else:
cursor.execute(self.query)
columns = [col[0] for col in cursor.description]
data = cursor.fetchall()
data = [