将 pandas 数据框插入 Neo4j

Sye*_*ail 6 python neo4j pandas

我有一个类似的 pandas DataFrame - dataframe

Person1     Person2
933         4139
933         6597069777240
933         10995116284808
Run Code Online (Sandbox Code Playgroud)

我想将它们存储到 Neo4j 中,并且我正在应用以下代码

from py2neo import Graph
graph = Graph("bolt://localhost:7687", user="neo4j", password="my_password")
tx = graph.begin()
for index, row in dataframe.iterrows():
    tx.evaluate('''
       MATCH (a:person1 {property:$Person1}), (b:person2 {property:$Person2})
       MERGE (a)-[r:R_TYPE]->(b)
       ''', parameters = {'Person1': int(row['Person1']), 'Person2': int(row['Person2'])})
tx.commit()
Run Code Online (Sandbox Code Playgroud)

代码运行没有错误,但我没有看到 Neo4j Desktop 中创建的新节点。我需要交付一个项目,对 Neo4j 不太了解。谢谢。

cyb*_*sam 4

  1. 确保您的查询使用正确的节点标签。您的数据库是否真的有带有标签person1和 的节点person2
  2. 确保感兴趣的节点实际上具有名为“property”的属性。
  3. 确保感兴趣的节点实际上将“属性”值存储为整数。

[更新]

由于您已经表明您还没有任何节点,因此这里是一个 Cypher 代码示例,它将创建节点和关系(同时避免意外的重复):

from py2neo import Graph
graph = Graph("bolt://localhost:7687", user="neo4j", password="my_password")
tx = graph.begin()
for index, row in dataframe.iterrows():
    tx.evaluate('''
       MERGE (a:person1 {property:$Person1})
       MERGE (b:person2 {property:$Person2})
       MERGE (a)-[r:R_TYPE]->(b)
       ''', parameters = {'Person1': int(row['Person1']), 'Person2': int(row['Person2'])})
tx.commit()
Run Code Online (Sandbox Code Playgroud)