2017-05-26 162 views
0

我想從python導出數據到neo4j數據庫使用py2neo包。 我有一個數據幀'ranked_conts'包含一個數字內容是哪些字符串和他們對應的行列在浮動。
我的代碼是py2neo.database.status.CypherSyntaxError:變量未定義

findnode = list(graph.find('rank',property_key='type',property_value='TrendingRank')) 

if len(findnode) > 0: 
    print("already exist") 
else: 
    for i in range(len(ranked_conts)): 
     conts = ranked_conts.iloc[i]['content_id'] 
     rank = ranked_conts.iloc[i]['rank'] 
     graph.run("MERGE(c:Content{contentId:"+str(conts)+"})-[hr: HAS_RANK{r:"+str(rank)+"}]->(rank:Rank {type: 'TrendingRank'})") 

但是當我執行它,我收到了一條錯誤消息py2neo.database.status.CypherSyntaxError:變量EROS_6272897沒有定義。

回答

0

您希望使用參數代替爲每個i in range創建一個新的查詢。喜歡的東西:

findnode =list(graph.find('rank',property_key='type',property_value='TrendingRank')) 

if len(findnode) > 0: 
    print("already exist") 
else: 
    for i in range(len(ranked_conts)): 
     conts = ranked_conts.iloc[i]['content_id'] 
     rank = ranked_conts.iloc[i]['rank'] 
    graph.run("MERGE (c:Content{contentId:{cId}})-[hr: HAS_RANK{r:{rankValue}}]->(rank:Rank {type: 'TrendingRank'})",cId = str(conts),rankValue = str(rank)) 

這應該加快您的查詢,並使其更容易檢查語法錯誤。一個音符也是你可能想合併:Content:Rank分開,然後MERGE與它的關係。喜歡這個。

MERGE (c:Content{contentId:{cId}}) 
MERGE (rank:Rank {type: 'TrendingRank'}) 
MERGE (c)-[hr: HAS_RANK{r:{rank}}]->(rank) 
+0

謝謝!!!!它的工作..但每次當我運行它,一個新的節點創建,但內容節點已經存在。 –

+0

看到我告訴你分開合併每個節點然後合併關係到它的第二部分 –