使用python字典填充Neo4j

2024-04-29 18:27:46 发布

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

所以我刚从Neo4j开始,我在尝试如何填充我的数据帧。我有一个字典,单词作为键,同义词作为列表中的值,我想填充Neo4j,这似乎是学习如何使用数据库的一个有趣的方法。在

例如:

'CRUNK':[你'喝醉了',你'浪费了',你'兴奋',你'疯了',你'锤子',你'酒精',你'赫希',你'派对']

列表的长度不会相等,因此将其转换为更典型的csv格式不是一个选项,而且我还没有找到一个解释,说明如何像在Django应用程序中为SQL数据库填充数据库。我想这样做:

for each k,v in dictionary:
    add k and add relationship to each value in v

有没有人有任何教程、文档或答案可以帮我指出正确的方向?在


Tags: 数据方法inadd数据库列表字典浪费
2条回答

我想你想做的你可以直接在Cypher中做:

MERGE (w:Word {text:{root}})
UNWIND {words} as word
MERGE (w2:Word {text:word})
MERGE (w2)-[:SYNONYM]->(w)

然后使用http://py2neo.org的cypher会话API和两个参数(一个root单词和一个{}列表)运行此语句。在

你也可以用foreach代替放松

^{pr2}$

合并合并的最终编辑:

它使用字典检查以确保它们的输出不是NoneType或“NOT FOUND”,并使用merge函数用“SYNONYM”关系填充图形,以确保它们不重复。在

import pickle
from py2neo import Graph
from py2neo import Node, Relationship

import random

graph = Graph("http://neo4j:%s@localhost:7474/db/data/" %(pw))
udSyn = pickle.load(open('lookup_ud', 'rb'))
myWords = udSyn.keys()

for key in myWords:
    print key
    values = udSyn[key]
    if values in [None, "NOT FOUND"]:
        continue
    node = graph.merge_one("WORD", "name", key)

    for value in values:
        node2 = graph.merge_one("WORD", "name", value)
        synOfNode = Relationship(node, 'SYNONYM', node2)
        graph.create(synOfNode)
        graph.push()

相关问题 更多 >