Python脚本未执行所有Neo4j命令

2024-09-26 22:52:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它将字典(其项是列表)作为节点和关系插入到我机器上的Neo4j图形数据库中:

uri = "bolt://localhost:7687"
driver = GraphDatabase.driver(uri, auth=("", ""))

session = driver.session()

for key in result_set.keys():
    createKeyQuery = 'MERGE ({key}:object{{name: \"{key_not_replaced}\"}})'.format(key=key.replace('.', ''), key_not_replaced=key)
    print('Running:', createKeyQuery)
    session.run(statement=createKeyQuery)

    for item in result_set[key]:
        createItemQuery = 'MERGE ({item}:object{{name: \"{item_not_replaced}\"}})'.format(item=item.replace('.', ''), item_not_replaced=item)

        createRelationshipQuery = 'MATCH (a:object),(b:object) WHERE a.name = \'{key}\' AND b.name = \'{item}\' MERGE (a)-[r:DEPENDS_ON]->(b)'.format(item=item, key=key)

        session.run(statement=createItemQuery)
        session.run(statement=createRelationshipQuery)
        print('RAN:', createItemQuery)
        print('RAN:', createRelationshipQuery)

我的字典是这样的:

{'key1.something.something': ['item1.something.something', 'item2.something.something'],
'key2.something.something': ['item2.something.something']}

在我的代码中,字典大约有300个键。出于某种原因,所有的createItemQuery语句都在打印(例如,MERGE (key1somethingsomething{name: "key1.something.something"})实际上是在我的屏幕上打印的),但它没有被执行。未创建名为“key1.something.something”的节点

我的python脚本是否执行得太快,使我的Neo4j实例无法跟上?看起来大多数节点和关系都在创建中,但字典中后面的一个节点并没有添加到图表中。有什么我遗漏的吗?我觉得循环执行的次数没有问题(因为语句正在打印…只是没有执行)


Tags: keynameformat字典节点objectsessiondriver

热门问题