2017-02-21 41 views
0

这是我认为是一个非常简单的问题。我试图重新此页上的图(向下滚动了一下):使用py2neo从CSV文件创建图形的正确语法

https://linkurio.us/visualizing-network-donald-trump/

有代码此页面上创建图形,但我想用py2neo等同。我已经使用类似于下面的代码的语法在NetworkX中成功创建了这些相同的图表,但下面的代码生成了一些完全不同的代码。我希望得到的代码能够从CSV文件中以适当的py2neo形式创建适当的图形。请注意,我已经搜索了答案,并且我已经查看了此链接,并且不确定我遵循:Creating neo4j graph database from csv file using py2neo

下面的代码工作正常(否则),我使用py2neo和Neo4j(CE)的最新版本。我更喜欢简单的代码(生成器,列表解析等,可能不是最好的),但会采取我能得到的任何东西。很显然,我正在阅读一个CSV文件,读出名为“组织”,“人员”和“连接”的列,并使用这些值创建显示连接的图形,如上述链接。谢谢!我使用

代码:

def readCSV_forNeo4j_Trump(path): 
    with open(path + '/Trump/TrumpWorldData_Person-Org.csv', ncoding='utf8') as csvfile: 
     reader = csv.DictReader(csvfile) 
     for row in reader: 
      Organization = row['Organization'] 
      Person = row['Person'] 
      Connection = row['Connection'] 
      Person_Node = Node("Person", name=Person) 
      graph.create(Person_Node) 
      Org_Node = Node("Organization", name=Organization) 
      graph.create(Org_Node) 
      Person_Org = Relationship(Person_Node, Connection, Org_Node) 
      graph.create(Person_Org) 

回答

1

您可以使用暗号从py2neo。

def readCSV_forNeo4j_Trump(path): 
    with open(path + '/Trump/TrumpWorldData_Person-Org.csv', ncoding='utf8') as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     Organization = row['Organization'] 
     Person = row['Person'] 
     Connection = row['Connection'] 
     graph.run("MERGE (p:Person{name:{name}}) 
     MERGE (o:Organization{name:{organization}}) 
     CREATE (p)-[:IS_CONNECTED{type:{relationship}}]->(o)", 
     name=Person, organization=Organization , relationship = Connection) 

我已经写了我头顶的查询...你可以从指令中复制密码并从py2neo运行它。

+0

谢谢,托马斯,做到了。一个注意,py2neo 3没有密码构造函数。而不是使用cypher = graph.cypher,然后cypher.execute(与py2neo 2一样),只需调用graph.run()(不需要实例化一个密码对象,再次感谢! – starconsult

+0

谢谢你。注意到它很慢,有什么办法可以加快速度吗?我尝试了graph.schema.create_index,但它似乎没有什么区别。 –

相关问题