You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python获取Neo4j中的所有数据库名称?

获取Neo4j所有数据库名称的正确方法

问题原因

Neo4j Python驱动中,session.run()执行Cypher语句后返回的是Result游标对象,直接打印该对象只会输出对象的内存地址,不会返回实际查询到的数据,必须主动消费结果对象才能读取到记录内容。
SHOW DATABASES语句返回的每条记录中,数据库名称存储在name字段下。

实现代码

方法1:直接遍历Result对象提取字段

from neo4j import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))

with driver.session() as session:
    result = session.run("SHOW DATABASES")
    # 遍历所有记录,提取name字段得到数据库名列表
    db_name_list = [record["name"] for record in result]
    print(db_name_list)

执行后会输出类似['neo4j', 'system', 'testdb']的结果,就是实例下所有的数据库名称。

方法2:通过data()方法获取全量结果

如果需要同时拿到数据库的其他属性(比如状态、访问地址等),可以调用Result对象的data()方法,直接把所有结果转为Python列表字典结构:

from neo4j import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))

with driver.session() as session:
    result = session.run("SHOW DATABASES")
    # 拿到所有数据库的全量信息
    db_info_list = result.data()
    # 提取数据库名
    db_name_list = [db["name"] for db in db_info_list]
    print("所有数据库名称:", db_name_list)
    # 可直接读取其他字段信息
    for db in db_info_list:
        print(f"数据库{db['name']},当前状态:{db['currentStatus']}")

注意事项

  • 执行SHOW DATABASES需要连接账号拥有对应权限,默认的neo4j管理员账号自带该权限,自定义账号需要提前授予相关权限
  • 驱动使用完成后建议调用driver.close()释放连接资源,也可以将驱动初始化放在with上下文管理器中实现自动释放
  • 不要重复消费已经遍历完的Result对象,结果遍历完成后游标会关闭,再次读取会返回空值,如果需要多次使用结果,请提前把数据存到本地变量里

内容的提问来源于stack exchange,提问作者santosh kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:57:20