我试图使用neo4j包将数据从python导出到py2neo db。我有一个dataframe‘放位_conts’,其中包含一个数字内容是字符串,它们的相应级别在float中。
我的代码是
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
未定义。
发布于 2017-05-26 08:18:46
您希望使用参数,而不是为每个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)
https://stackoverflow.com/questions/44195097
复制相似问题