py2neo.database.status.CypherSyntaxError: Variable not defined
py2neo.database.status.CypherSyntaxError: Variable not defined
我正在尝试使用 py2neo 包将数据从 python 导出到 neo4j 数据库。
我有一个数据框'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
未定义。
您想使用参数而不是为每个 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)
我正在尝试使用 py2neo 包将数据从 python 导出到 neo4j 数据库。
我有一个数据框'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
未定义。
您想使用参数而不是为每个 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)