2013-09-22 25 views
0

我想從一個文本文件中的數據插入到使用py2neo.But Neo4j是他們的方式創造,它已經exist.Is他們的任何py2neo方式爲CREATE UNIQUE 例如中插入文本數據的Neo4j使用py2neo

節點前檢查

創建節點A到B 創建到C

那麼只有單個節點A必須創建並連接到B和C

insert_data.py

節點A
from pprint import pprint 
from py2neo import neo4j,node, rel, cypher 
#------------------------------------------------------------------------------ 

f = open('sample_dataset') 
lines = f.readlines() 
graph_db = neo4j.GraphDatabaseService() 
print graph_db.get_reference_node() 
try: 
    for row in lines:  
     from_node = row.split('\t')[0].strip() 
     to_node = row.split('\t')[1].strip() 
     graph_db.create(
         node(name=from_node), 
         node(name=to_node))        
except Exception as e: 
    print e 

的data.txt:

101 102 
101 104 
101 107 
101 125 
101 165 
101 168 
101 170 
101 176 
101 180 
101 181 
101 182 
101 209 
101 210 
101 248 
101 306 
101 329 
101 330 
101 340 
101 349 
101 352 
101 355 
101 356 
101 359 
101 364 
101 365 
101 368 
101 372 
101 373 
101 383 
101 433 
101 438 
101 439 
101 441 
101 448 
101 466 
101 471 
101 484 
101 526 

回答

2

這樣做的一種方法是使用CYPHER 2.0和py2neo。 在你的代碼只需更換

graph_db.create 

與此,在查詢字符串的開頭說CYPHER 2.0,這對合並支持:

query = neo4j.CypherQuery(graph_db, 
     """CYPHER 2.0 
      merge (n {name: {from}}) 
      merge(m {name: {to}}) 
      create unique (n)-[:relation]->(m)""") 
result = query.execute(from = from_node, to = to_no) 

使用合併N,將僅創建它不在數據庫中。 希望這有助於。

+0

感謝這個,花了最後一個小時左右,試圖找出如何通過py2neo做路徑中的方向關係。 – vly