【问题标题】:UNWIND feature in py2neo not reading json fullypy2neo 中的 UNWIND 功能未完全读取 json
【发布时间】:2017-10-28 17:27:37
【问题描述】:
graph = Graph()
query2 = """
WITH {m} AS document
UNWIND document.lists AS s
UNWIND s.imageurl AS img
UNWIND s.youtubevideourl AS vid
RETURN s
"""
print (graph.cypher.execute(query2,m = m))

我正在尝试使用 UNWIND 读取完整的 json 文件,但我只是

通过第一部分,所以我无法绘制完整的 json 图表。

之前运行良好,但现在我添加了 youtube 视频链接,标题为

相同的页面、weblinkurl、webtitle 我已经开始面临同样的问题。

这是我使用不同链接编译的 JSON 文件的示例,因为我只能阅读第一部分,但我想阅读完整的 JSON。

这只有 JSON 的 2 部分,我想完整阅读并制作节点

如果有人能告诉如何使用 UNWIND 或其他方法,请。

[{'Topic': 'Virat_Kohli',
  'imagetitle': 'Virat_Kohli_June_2016_(cropped).jpg?width=300',
  'imageurl': 'http://commons.wikimedia.org/wiki/Special:FilePath/Virat_Kohli_June_2016_(cropped).jpg?width=300',
  'webtitle': 'Virat Kohli Official Website',
  'weburl': 'http://www.viratkohli.club/',
  'youtubevideotitle': 'Virat Kohli Finally Accepts Love For GIRLFRIEND Anushka Sharma On Aamir Khan's Secret Superstar Show - YouTube',
  'youtubevideourl': 'https://www.youtube.com/watch?v=zmPh2OQzZqc'},
 {'Topic': 'Virat_Kohli',
  'webtitle': 'Virat Kohli profile 2017, News and images only on official website of RCB',
  'weburl': 'https://www.royalchallengers.com/virat-kohli',
  'youtubevideotitle': 'Virat Kohli after losing ICC champions trophy Final - India vs Pakistian - Press Conference 2017 - YouTube',
  'youtubevideourl': 'https://www.youtube.com/watch?v=Yf38l1Kx2-I'},

我想做的就是这个

graph = Graph()
query2 = """
WITH {j} AS document
UNWIND document.lists AS s
UNWIND s.Topic AS  top
UNWIND s.weburl AS  url
UNWIND s.imageurl AS  img
UNWIND s.youtubevideourl as y
MERGE (c:topicnames {name:s.Topic})
MERGE (sc:images{img:img, type : s.imagetitle})
MERGE (v:weblink{url:url, type : s.webtitle})
MERGE (g:videos{vid:y, type : s.youtubevideotitle})
MERGE (c)-[:IMAGE_LINKS]->(sc)
MERGE (c)-[:WEB_LINKS]->(v)
MERGE (c)-[:VIDEO_LINKS]->(g)
RETURN (c)
"""


print (graph.cypher.execute(query2,j = j))

所以我必须在 neo4j 中有一个主题节点和 5 个视频链接节点、5 个 weblink 节点和 1 个 imagelink 节点,但它只有 json 的 1 部分的绘图节点 所以 UNWIND 不会读取或转换与 Topic、weburl、youtubevideourl 具有相同键的其他值,这就是为什么我想知道它为什么不起作用以及如何修复它。

【问题讨论】:

  • 你想用 3 UNWINDS 完成什么?你查询只返回s,这是由第一个UNWIND获取的。
  • 我想你可能不明白 UNWIND 是做什么的。 UNWIND 对集合/列表进行操作,并将该集合更改为行。第一个 UNWIND 看起来不错,但其他两个在非集合值上运行(根据您的摘录,它们是字符串)。你到底想在这里做什么?
  • 我想做什么
  • #InverseFalcon #cybersam 请阅读我已更新的问题
  • 我在这里以 dict 的形式得到它我只显示了 dict 中的值,就像这样

标签: python json graph neo4j py2neo


【解决方案1】:

JSON 文件本身就是文档列表,因此您无需专门传递列表。而且您不需要多次使用 UNWIND。尝试使用以下程序(并确保解析时所有变量都存在):

graph = Graph()
query2 = """
UNWIND {j} AS s
MERGE (c:topicnames {name:s.Topic})
MERGE (sc:images{img:s.imageurl, type : s.imagetitle})
MERGE (v:weblink{url:s.weburl, type : s.webtitle})
MERGE (g:videos{vid:s.youtubevideourl, type : s.youtubevideotitle})
MERGE (c)-[:IMAGE_LINKS]->(sc)
MERGE (c)-[:WEB_LINKS]->(v)
MERGE (c)-[:VIDEO_LINKS]->(g)
RETURN (c)
"""
print (graph.cypher.execute(query2,j = j))

希望这会有所帮助!

【讨论】:

  • 我尝试了同样的方法,但它给出了语义错误 .-AttributeError: module 'py2neo.cypher. '语义错误'。仍然感谢您的建议
  • 你为什么不试试 python-neo4j 驱动。它比 py2neo 更快更容易。我建议这样做是因为我们在当前项目中使用该驱动程序。
猜你喜欢
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 2014-07-24
相关资源
最近更新 更多