2016-12-27 174 views
0

我在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 

回答

0

在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的一個示例實現。

0

您可以使用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的項目又是列表,你可以隨意使用放鬆的好很多