2017-05-26 44 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

看到我告诉你分开合并每个节点然后合并关系到它的第二部分 –