美文网首页
记一个 neo4j 与 py2neo 的 match 语句的坑

记一个 neo4j 与 py2neo 的 match 语句的坑

作者: 魔法双击 | 来源:发表于2020-06-16 00:41 被阅读0次

    最近项目中需要使用 neo4j 构建知识图谱。
    在师兄建议下使用了 py2neo ,而不是 neo4j 官方的api.

    初始化

    使用时先要在 Terminal运行
    ./bin/neo4j console
    然后在python里面运行你的代码

    graph = Graph("http://localhost:7474",auth=("neo4j", "xxx")) #auth参数 账号、密码
    graph.delete_all() # 先清空
    graph.begin() # 开搞
    ...
    

    然后每次创建 Node/Relationship后 graph.merge(...),就都能在网页版http://localhost:7474/browser/看到效果啦

    match语句的坑

    首先,我是用最新版 neo4j (2020.06.16) 与 py2neo v4.
    先尝试用了官方v4手册上的

    matcher = NodeMatcher(graph)
    node1 = matcher.match(“Person”, name=“Tom”).first()
    

    并不行,报错。
    找到了http://neo4j.com.cn/topic/5e8d8d245426e67e5afcf66c 这位同样被新版 neo4j 坑了的童鞋。
    改成这样就可了。

    node1 = matcher.match(‘Person’).where("_.name=‘Tom’").first()
    

    但是

    还有一个小坑
    就是如果你要在where里使用变量,如
    .where("_.name=name1"),这样是不行的!!!
    .where("_.name='name1'"),这样也是不行的!!!

    不想去分析怎么转义或者在引号里引用变量的我只好非常无奈地把代码写成了这样
    .where("_.name=" + "'" + name1 + "'")

    毕竟 python 嘛,能跑出结果就行

    相关文章

      网友评论

          本文标题:记一个 neo4j 与 py2neo 的 match 语句的坑

          本文链接:https://www.haomeiwen.com/subject/bywkxktx.html