Создание нескольких одинаковых типов отношений из узла в python с помощью neo4j-драйвера

Я столкнулся с этой проблемой при попытке массовой загрузки данных из шифрованного скрипта с помощью драйвера 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)

person Michael S.    schedule 23.03.2020    source источник


Ответы (1)


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

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

neo_db.sync()

Дополнительную информацию можно найти здесь: https://neo4j.com/docs/api/python-driver/current/transactions.html#neo4j.neo4j.Transaction.Transaction.run

person Michael S.    schedule 24.03.2020