Skip to content

Commit 1c23a71

Browse files
committed
Use given database when retrieving server version at Neo4j QR init
1 parent d211dfd commit 1c23a71

File tree

3 files changed

+30
-8
lines changed

3 files changed

+30
-8
lines changed

graphdatascience/query_runner/neo4j_query_runner.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,20 @@ def create(
4646
driver = neo4j.GraphDatabase.driver(endpoint, auth=auth, **config)
4747

4848
query_runner = Neo4jQueryRunner(
49-
driver, auto_close=True, bookmarks=bookmarks, config=config, server_version=server_version
49+
driver,
50+
auto_close=True,
51+
bookmarks=bookmarks,
52+
config=config,
53+
server_version=server_version,
54+
database=database,
5055
)
5156

5257
elif isinstance(endpoint, neo4j.Driver):
53-
query_runner = Neo4jQueryRunner(endpoint, auto_close=False, bookmarks=bookmarks)
58+
query_runner = Neo4jQueryRunner(endpoint, auto_close=False, bookmarks=bookmarks, database=database)
5459

5560
else:
5661
raise ValueError(f"Invalid endpoint type: {type(endpoint)}")
5762

58-
if database:
59-
query_runner.set_database(database)
60-
6163
return query_runner
6264

6365
@staticmethod
@@ -97,7 +99,7 @@ def run_cypher(
9799
if database is None:
98100
database = self._database
99101

100-
self._verify_connectivity()
102+
self._verify_connectivity(database=database)
101103

102104
with self._driver.session(database=database, bookmarks=self.bookmarks()) as session:
103105
try:
@@ -303,11 +305,14 @@ def handle_driver_exception(session: neo4j.Session, e: Exception) -> None:
303305

304306
raise SyntaxError(generate_suggestive_error_message(requested_endpoint, all_endpoints)) from e
305307

306-
def _verify_connectivity(self) -> None:
308+
def _verify_connectivity(self, database: Optional[str] = None) -> None:
307309
WAIT_TIME = 1
308310
MAX_RETRYS = 10 * 60
309311
WARN_INTERVAL = 10
310312

313+
if database is None:
314+
database = self._database
315+
311316
exception = None
312317
retrys = 0
313318
while retrys < MAX_RETRYS:
@@ -318,7 +323,7 @@ def _verify_connectivity(self) -> None:
318323
category=neo4j.ExperimentalWarning,
319324
message=r"^The configuration may change in the future.$",
320325
)
321-
self._driver.verify_connectivity()
326+
self._driver.verify_connectivity(database=database)
322327
break
323328
except neo4j.exceptions.DriverError as e:
324329
exception = e

graphdatascience/tests/integration/test_database_ops.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,22 @@
1313
GRAPH_NAME = "g"
1414

1515

16+
@pytest.mark.skip_on_aura
17+
def test_init_without_neo4j_db(runner: Neo4jQueryRunner) -> None:
18+
default_database = runner.database()
19+
20+
MY_DB_NAME = "bananas"
21+
runner.run_cypher("CREATE DATABASE $dbName WAIT", {"dbName": MY_DB_NAME})
22+
23+
runner.run_cypher("DROP DATABASE $dbName WAIT", {"dbName": default_database})
24+
25+
try:
26+
_ = GraphDataScience(URI, AUTH, database=MY_DB_NAME)
27+
finally:
28+
runner.run_cypher("CREATE DATABASE $dbName WAIT", {"dbName": default_database}, database=MY_DB_NAME)
29+
runner.run_cypher("DROP DATABASE $dbName WAIT", {"dbName": MY_DB_NAME})
30+
31+
1632
@pytest.mark.skip_on_aura
1733
def test_switching_db(runner: Neo4jQueryRunner) -> None:
1834
default_database = runner.database()

tox.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ deps =
6868
-r {toxinidir}/requirements/dev/notebook-ci.txt
6969
commands =
7070
python ./scripts/run_notebooks.py
71+
7172
[testenv:jupyter-notebook-session-ci]
7273
passenv =
7374
AURA_API_CLIENT_ID

0 commit comments

Comments
 (0)