如何解决为什么Neo4j Python驱动器官方文档中的代码示例不起作用?
我目前正在从事一个需要构建和显示图形的项目。我要使用neo4j来执行此操作,但是我无法从官方文档运行代码示例。
- 我正在使用在docker容器中运行的jupyter实验室笔记本中的neo4j python驱动程序。
- neo4j在另一个Docker容器上运行
- 两者都在同一个docker-compose中,并且同时启动
这是文档的链接:https://neo4j.com/docs/api/python-driver/current/
我正在尝试执行第一个代码示例(快速示例->创建节点)
我正在使用与文档(4.1)中相同的neo4j驱动程序版本
这是我得到的错误:
CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: Invalid input 'H': expected 'i/I' (line 1,column 57 (offset: 56))
"CREATE (a:Person)-[:KNOWS]->(f:Person {name: $friend}) WHERE a.name = '$name' RETURN f.name AS friend"
^}
在我看来,语法不允许将关键字“ WHERE”与“ CREATE”一起使用,但目前我对cypher的体验非常差。无论如何,我从官方文档中获取了示例,但是它不起作用,您知道为什么吗?
解决方法
根据我的经验,先创建节点,然后再创建关系要干净得多。所以这是我的建议:
CREATE(:Person{name:$name});
CREATE(:Person{name:$friend});
MATCH(a:Person{name:$name})
WITH a
MATCH(f:Person{name:$friend})
CREATE(a)-[:KNOWS]->(f);
最后,如果您要进行查询,则可以执行以下操作:
MATCH(a:Person{name:$name})-[:KNOWS]->(f:Person{name:$friend})
RETURN f.name AS `friend`
我还没有对此进行测试,并且可能存在语法错误,尤其是$name
和$friend
变量,但是我认为这种总体结构对您来说会更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。