Создание нескольких одинаковых типов отношений из узла в python с использованием neo4j-драйвера - PullRequest
0 голосов
/ 24 марта 2020

Я сталкиваюсь с этой проблемой при попытке массовой загрузки данных из сценария шифра с помощью драйвера neo4j для python. Допустим, у меня есть узел X, я должен быть в состоянии сделать следующее:

(X) - [: IS_FRIENDS] -> (Y)

(X) - [: IS_FRIENDS] -> (Z)

то есть иметь несколько одинаковых типов отношений, поступающих из узла. Но когда я пытаюсь запустить скрипт (~ 5 тыс. Вставок, построчно), он запускается, но не позволяет использовать более одного одинакового типа отношений на узел. Это не проблема, если я запускаю запрос на шифрование непосредственно в график. Я также нашел это (https://www.lyonwj.com/LazyWebCypher/), у которого нет этой проблемы, но мне нужно, чтобы скрипт прошел через python. График пропускает ~ 1k отношений.

Код, о котором идет речь:

from neo4j import GraphDatabase, basic_auth

neo_driver = GraphDatabase.driver(url, auth=basic_auth(us, pw))
neo_db = neo_driver.session()

with open(cypher_file, 'r') as f:
       for line in f:
            x = neo_db.run(line)

1 Ответ

0 голосов
/ 24 марта 2020

Так что это была общая проблема с py2neo, поэтому я предположил, что столкнулся с той же проблемой при использовании драйвера neo4j, но оказалось, что моя проблема была в другом. В любом случае мне удалось исправить это, заставляя операторы очереди помещаться после каждого запроса, это не очень оптимально, но оно работает как временное решение.

Это делается с помощью следующей функции:

neo_db.sync()

Больше можно найти здесь: https://neo4j.com/docs/api/python-driver/current/transactions.html#neo4j .neo4j.Transaction.Transaction.run

...