вставить pandas фрейм данных в neo4j - PullRequest
0 голосов
/ 18 января 2020

У меня есть pandas DataFrame вроде - dataframe

Person1     Person2
933         4139
933         6597069777240
933         10995116284808

Я хочу сохранить их в 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()

Код работает без ошибок, но я не вижу новых узлов, созданных в Neo4j Desktop. Мне нужно доставить проект, и я не очень понимаю Neo4j. Спасибо.

1 Ответ

2 голосов
/ 18 января 2020
  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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...