python - 如何返回具有值的节点的所有属性

标签 python flask neo4j cypher

我正在使用 Flask 和 Neo4j 开发一个项目。我需要从一个节点中检索所有属性作为字典。像这样的东西

{'性别':'男','密码':'$2a$12$fd5KtsMjZHz26goBGcF3/.gZhZUP/6YAP7lRQ8Kf6eB5m69EhB5lS','电子邮件':'xyz@gmail.com','年龄':'50','国家”:“美国”,“用户名”:“xyz”

我在寻找答案时偶然发现了这个问题

How can I return all properties for a node using Cypher? 其中建议可以将属性名称作为键返回。

在 2.3.0 版本中,也可以返回值 例如,我有具有这些属性的节点

用户名 xyz

电子邮件 xyz@gmail.com

50 岁

性别男

密码 $2a$12$fd5KtsMjZHz26goBGcF3/.gZhZUP/6YAP7lRQ8Kf6eB5m69EhB5lS

如果我用下面的查询返回 n

>>>for record in graph.cypher.execute("MATCH (n:User) WHERE n.username='xyz' RETURN n"):

...         print(record[0])

结果是连续返回的,前面有这个(n11:User,所以我不能不做进一步处理就直接在jinja模板中使用这个结果


(n11:用户{年龄:“50”,国家:“美国”,电子邮件:“xyz@gmail.com”,性别:“男”,密码:“$2a$12$fd5KtsMjZHz26goBGcF3/.gZhZUP/6YAP7lRQ8Kf6eB5m69EhB5lS” ,用户名:"xyz"})

如果我使用下面的查询

>>>for record in graph.cypher.execute("MATCH (n:User) WHERE n.username='xyz'
RETURN EXTRACT(key IN keys(n) | {value: n[key], key:key})"):

...         print(record[0])

我得到了这些结果。

[{'value': 'xyz@gmail.com', 'key': 'email'}, {'value': '50', 'key': 'age'}, {'value': ' US', 'key': 'country'}, {'value': 'xyz', 'key': 'username'}, {'value': '$2a$12$fd5KtsMjZHz26goBGcF3/.gZhZUP/6YAP7lRQ8Kf6eB5m69EhB5lS', 'key ': '密码'}, {'value': '男', 'key': '性别'}]

此查询的问题在于,它实际上并不返回键值元组,而是在键和值前面附加键和值标签。 如果不进行进一步处理,就无法使用输出。
还是有另一种方法来运行查询以将结果作为 dict 获取?

此外,来自 Neo4j 的创意箱

https://trello.com/c/FciCdgWl/7-cypher-property-container-functions

似乎可以进行这些查询

可能的功能:

匹配 n 个返回键(n) 返回属性键的集合。

匹配 n 个返回值(n) 返回属性值的集合。

MATCH n RETURN 条目(n) 返回键/值对的集合。

但我只能运行 - MATCH n RETURN keys(n)

为了休息,我得到了无效的语法错误。其余功能未实现?

最佳答案

如果您只是执行 RETURN n,那么节点属性将作为映射返回。

参见:http://neo4j.com/docs/stable/rest-api-transactional.html#rest-api-execute-multiple-statements

这个控制你以编程方式过滤你想要返回的属性:

MATCH (n) WHERE id(n)=#
RETURN EXTRACT(key IN keys(n) | {key: key, value: n[key]}) 

否则,如果您知道要返回哪些,请将它们拼写出来:RETURN n.name, n.age

关于python - 如何返回具有值的节点的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667417/

相关文章:

python - 将空行移动到数据框的底部

python - 当 slider 值在 Flask 中发生变化时,如何发送 slider 值的发布请求?

python - Py2neo Neo4j批量提交报错

neo4j - Spring Data Neo4j 无法识别外部插入的节点

Python子进程SSH关闭连接

python - 禁止 python 中的代理的正则表达式

python - 这个 'a' 在这个 Python 数组切片中的目的是什么(W[ : , : , : , a] )?

Javascript Ajax 到 Flask request.get_json : TypeError: string indices must be integers

python - mysql.connect() 在 with 语句中使用时返回不同的类型

node.js - 如何在neo4j中运行批处理事务