我正在尝试使用py2neo包将数据从python导出到neo4j db。
我有一个包含数字内容的dataframe'ranked_conts',它是字符串及其相应的浮点数。
我的代码是
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 :(得分: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)