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

py2neo匹配Person节点报SyntaxError: Invalid input '{'错误如何解决

错误原因

该报错本质是py2neo与Neo4j的版本不兼容:

  • 4.x及更早的py2neo版本生成参数化Cypher时,使用旧式{数字序号}格式的参数占位符,即报错中出现的{1}。
  • Neo4j 4.0及以上版本已经废弃该占位符语法,仅支持$参数名格式的参数写法,因此解析到{字符时直接触发语法错误。
修复方法

两种方案按需选择:

  • 无依赖限制时优先升级py2neo:执行命令pip install --upgrade py2neo,升级到适配高版本Neo4j的稳定版本即可。原有graph.nodes.match()的业务代码不需要任何修改,新版本py2neo会自动生成符合语法规范的$格式参数占位符,直接运行即可。如果升级过程中出现依赖冲突,可先清理冲突包再重装:pip uninstall -y py2neo neo4j && pip install py2neo
  • 若项目依赖锁定无法升级py2neo,可绕过nodes.match()封装API,手写符合Cypher语法的查询语句,显式使用$格式传递参数,参考代码如下:
nameu = 'person_%d'%(rel[0])
namev = 'person_%d'%(rel[1])
nodeu = graph.run("MATCH (n:Person) WHERE n.name = $name RETURN n LIMIT 1", name=nameu).evaluate()
nodev = graph.run("MATCH (n:Person) WHERE n.name = $name RETURN n LIMIT 1", name=namev).evaluate()

代码中evaluate()方法会返回查询结果第一行的第一列值,和原代码中first()取首个匹配节点的效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:06:25