如何将Python节点字典导入neo4j?
问题描述:
我在for循环中产生下列节点和关系数据约100万次。这个想法是,investor
节点连接到company
节点通过relationship
边缘:如何将Python节点字典导入neo4j?
investor = {'name': owner['name'],
'CIK': owner['CIK']}
relationship = {'isDirector': owner['isDirector'],
'isOfficer': owner['isOfficer'],
'isOther': owner['isOther'],
'isTenPercentOwner': owner['isTenPercentOwner'],
'title': owner['title']}
company = {'Name': json['issuerName'],
'SIC': json['issuerSIC'],
'Ticker Symbol': json['issuerTradingSymbol'],
'CIK': json['issuerCIK'],
'EIN': json['issuerEIN']}
如何完成以下代码来获取类型的字典以上为Neo4j的社区版本?
from py2neo import Graph, authenticate
authenticate("localhost:7474", "neo4j", "neo")
graph = Graph()
for json in long_list_of_dicts:
investor = {...}
company = {...}
relationship = {...}
# Code to import investor, company, relationship data into neo4j
答
在py2neo一个节点在如下定义:
class Node(*labels, **properties)
node
每个具有label
,并且可以具有许多properties
。在这种情况下,投资者节点可以通过设置标签投资者和节点的属性为名称和CIK来定义。
investor_node = Node('investor', name = owner['name'], CIK = owner['CIK'])
类似地,公司节点将如下所示:
company_node = Node('company', name = json['issuerName'], SIC = json['issuerSIC'])
关系以下述方式定义:
class Relationship(start_node, type, end_node, **properties)
在这种情况下关系可使用定义:
investor_company_relationship = Relationship(investor_node, "is_director", company_node)
您可以找到neo4j图here的一个示例实现。
答
您可以使用UNWIND
子句。 UNWIND document.list_of_some_property
WITH {json} AS document
UNWIND document AS company
MERGE (c:company {c_id:company.id})
SET c.sic=company.issuerSIC
的东西,如果你的一些JSON的项目又是列表,你可以随意使用放松的好很多