首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Neo4j-driver) -如何使用Python进行批量插入关系

(Neo4j-driver) -如何使用Python进行批量插入关系
EN

Stack Overflow用户
提问于 2019-08-08 16:04:22
回答 2查看 889关注 0票数 0

我正在尝试在neo4j数据库中的节点之间批量创建关系。我试着用这段代码,但是它不工作!

代码语言:javascript
复制
relations = [{'from': 'man', 'to': 'woman', 'properties': {'cost': 0}},
{'from': 'woman', 'to': 'baby', 'properties': {'cost': 0}]

query = """
    UNWIND {{relations}} as row
    MATCH (from:SINGLE_NODE {{row.from}})
    MATCH (to:SINGLE_NODE {{row.to}})
    CREATE/MERGE (from)-[rel:IS_CONNECTED]->(to)
    (ON CREATE) SET rel += row.properties
    """.format(relations=relations)

session.run(query, relations=relations)

那么,我该如何使用批处理来添加关系呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-08 16:36:01

您的查询有几个语法问题。

在下面的代码行中,没有提到您试图与参数row.from和row.to匹配的节点属性。

代码语言:javascript
复制
MATCH (from:SINGLE_NODE {{row.from}})
MATCH (to:SINGLE_NODE {{row.to}})

从它们的值来看,我猜它们应该是gender属性,查询应该类似于:

代码语言:javascript
复制
MATCH (from:SINGLE_NODE {{gender:row.from}})
MATCH (to:SINGLE_NODE {{gender:row.to}})

在下面的语句中,它应该是CREATE OR MERGE,并且在第二行中,CREATE应该没有大括号。仅当您在第一行使用MERGE时才使用ON CREATE,否则只使用SET。

代码语言:javascript
复制
CREATE/MERGE (from)-[rel:IS_CONNECTED]->(to)
(ON CREATE) SET rel += row.properties

因此,它应该是其中之一:

代码语言:javascript
复制
CREATE (from)-[rel:IS_CONNECTED]->(to)
SET rel += row.properties

代码语言:javascript
复制
MERGE (from)-[rel:IS_CONNECTED]->(to)
ON CREATE SET rel += row.properties
票数 0
EN

Stack Overflow用户

发布于 2019-08-08 18:56:41

我现在找到了答案,所以正确的语法是这样的。

代码语言:javascript
复制
 query = """
    UNWIND {{relations}} as row
    MATCH (from:SINGLE_NODE {{name:row.from}})
    MATCH (to:SINGLE_NODE {{name:row.to}})
    MERGE (from)-[rel:IS_CONNECTED]->(to)
    ON CREATE SET rel += row.properties
    """.format(relations=relations)

    session.run(query, relations=relations)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57407926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档