community[patch]: Add driver config param for neo4j graph (#20772)

Co-authored-by: Bagatur <baskaryan@gmail.com>
This commit is contained in:
Tomaz Bratanic 2024-04-24 23:14:41 +02:00 committed by GitHub
parent 13751c3297
commit 9efab3ed66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 1 deletions

View File

@ -151,6 +151,7 @@ class Neo4jGraph(GraphStore):
embedding-like properties from database responses. Default is False.
refresh_schema (bool): A flag whether to refresh schema information
at initialization. Default is True.
driver_config (Dict): Configuration passed to Neo4j Driver.
*Security note*: Make sure that the database connection uses credentials
that are narrowly-scoped to only include necessary permissions.
@ -173,6 +174,8 @@ class Neo4jGraph(GraphStore):
timeout: Optional[float] = None,
sanitize: bool = False,
refresh_schema: bool = True,
*,
driver_config: Optional[Dict] = None,
) -> None:
"""Create a new Neo4j graph wrapper instance."""
try:
@ -194,7 +197,9 @@ class Neo4jGraph(GraphStore):
{"database": database}, "database", "NEO4J_DATABASE", "neo4j"
)
self._driver = neo4j.GraphDatabase.driver(url, auth=(username, password))
self._driver = neo4j.GraphDatabase.driver(
url, auth=(username, password), **(driver_config or {})
)
self._database = database
self.timeout = timeout
self.sanitize = sanitize

View File

@ -273,3 +273,21 @@ def test_neo4j_filtering_labels() -> None:
# Assert both are empty
assert graph.structured_schema["node_props"] == {}
assert graph.structured_schema["relationships"] == []
def test_driver_config() -> None:
"""Test that neo4j works with driver config."""
url = os.environ.get("NEO4J_URI")
username = os.environ.get("NEO4J_USERNAME")
password = os.environ.get("NEO4J_PASSWORD")
assert url is not None
assert username is not None
assert password is not None
graph = Neo4jGraph(
url=url,
username=username,
password=password,
driver_config={"max_connection_pool_size": 1},
)
graph.query("RETURN 'foo'")