Jupyter Notebook连接Neo4j报错:'Graph'对象无'cypher'属性
嘿,这个问题我之前也碰到过,马上帮你解决!
问题根源
你看到的AttributeError: 'Graph' object has no attribute 'cypher',是因为py2neo从v4版本开始就彻底废弃了graph.cypher.execute()这个旧API,原来的cypher属性已经从Graph对象里移除了,所以才会报错。另外你的连接代码也有个小问题,host参数的写法不对。
修正后的完整代码
我把你的代码改成适配新版本py2neo的写法,直接就能用:
from py2neo import Graph # 修正host参数:直接传bolt协议的完整地址,不需要加neo4j@前缀 graph = Graph("bolt://63.35.194.218:7687", auth=("neo4j", "neo4j")) # 执行查询的正确方式:用graph.run()替代旧的graph.cypher.execute() query = "MATCH (a)-[]-(b) RETURN a.id, b.id LIMIT 1" result = graph.run(query) # 把查询结果转成字典列表,方便查看 data = result.data() data
额外优化:转成Pandas DataFrame(可选)
如果想让结果更易读,转成DataFrame格式会更友好:
import pandas as pd df = pd.DataFrame(data) df
关于%reload_ext cypher的替代用法
如果你想用Jupyter的cypher魔法命令直接查询,也可以这么写(需要确保已经安装了ipython-cypher扩展):
%reload_ext cypher # 直接用魔法命令执行查询,还能转成DataFrame results = %cypher MATCH (a)-[]-(b) RETURN a.id, b.id LIMIT 1 results.dataframe
这样就能成功连接Neo4j并返回节点ID啦!
内容的提问来源于stack exchange,提问作者Stetco Oana
相关产品推荐
相关产品推荐

