Python连接Neo4j推送数据失败求助:无法获取路由信息
解决Neo4j Python驱动"Unable to retrieve routing information"错误
核心代码错误修复
你的代码存在致命的上下文管理器使用问题:with GraphDatabase.driver(URI, auth=AUTH) as driver:代码块结束后,driver会被自动关闭,但你在块外调用了driver.execute_query,此时driver已失效,必然触发连接错误。
修正后的代码需将查询逻辑放在with块内部:
import logging from neo4j import GraphDatabase # Set up logging logging.basicConfig(level=logging.DEBUG) log = logging.getLogger("neo4j") class Neo4jService: def __init__(self, uri, user, password): self._driver = GraphDatabase.driver(uri, auth=(user, password), trust_all_certificates=True) def close(self): log.debug("Closing driver.") self._driver.close() def run_queries(self, queries): log.debug("Running queries.") with self._driver.session() as session: for query in queries: log.debug(f"Executing query: {query}") session.run(query) try: # Initialize the Neo4j service URI = "neo4j+s://838f9df7.databases.neo4j.io" AUTH = ("neo4j", "my_password") log.info("Initializing driver.") with GraphDatabase.driver(URI, auth=AUTH, trust_all_certificates=True) as driver: log.info("Verifying connectivity.") driver.verify_connectivity() summary = driver.execute_query( "MERGE (:Person {name: $name})", name="Alice", database_="neo4j", ).summary log.info(f"Created {summary.counters.nodes_created} nodes in {summary.result_available_after} ms.") except Exception as e: log.error("An error occurred:", exc_info=True)
其他排查方向
- IP白名单验证:你使用的是Neo4j Aura云服务,需确认当前运行代码的IP地址已添加到Aura实例的允许访问列表。登录Neo4j Aura控制台,进入对应实例的「Settings」->「IP Allow List」检查并添加IP。
- 证书信任配置:测试环境可临时添加
trust_all_certificates=True参数跳过证书验证;生产环境建议配置系统可信证书,或在driver初始化时指定证书路径。 - 版本兼容性检查:确认Python驱动版本与Neo4j Aura实例版本匹配,比如Aura 5.x需使用5.x系列的neo4j Python驱动,可通过
pip install neo4j==<对应版本>指定安装。 - 协议与端口确认:Neo4j Aura推荐使用
neo4j+s://协议(默认端口7687),避免使用未加密的bolt://或存在路由风险的neo4j://。
内容的提问来源于stack exchange,提问作者Benjamin Hammond
相关产品推荐
相关产品推荐

