我可以像这样查询图表数据库
from neo4j import GraphDatabase
# establish connection
graphdp = GraphDatabase.driver(uri="bolt://localhost:7687", auth=("neo4j","Python"))
session = graphdp.session()
q1="MATCH (n {id:0}) return n"
nodes = session.run(q1)
for node in nodes:
print(node)
其结果是:
<Record n=<Node id=5 labels={'Ubuntu1604'} properties={'host_image': 'qsrf-56fh-3db5-xd4t', 'id': 0}>>
<Record n=<Node id=6 labels={'Ubuntu1804'} properties={'host_image': 'qsrf-56fh-3dd4-44ty', 'id': 0}>>
<Record n=<Node id=7 labels={'Network'} properties={'start': '', 'capability': 'connection', 'cidr': '', 'end': '', 'nameservers': '[10.0.71.254, 8.8.4.4, 8.8.8.8]', 'id': 0}>>
<Record n=<Node id=8 labels={'Port'} properties={'port_ip': '', 'requirement': '["container","connection"]', 'id': 0}>>
<Record n=<Node id=13 labels={'GuestLinuxUser'} properties={'id': 0, 'playbook': 'createLinuxUser'}>>
<Record n=<Node id=16 labels={'GuestWindowsUser'} properties={'id': 0, 'playbook': 'createWindowsUser'}>>
Process finished with exit code 0
如何访问每个节点属性?
4条答案
按热度按时间vzgqcmou1#
您可以保存BoltStatmentResult对象数据,然后通过Node.get()方法访问节点属性:
我在www.example.com()迭代中将元素命名为'record'nodes.data,因为如果您的RETURN返回了不止一个条目,那么record!= node。它是RETURN中条目的字典。
然后,您可以访问节点数据类型的任何方法,以下是docs参考
例如:
5t7ly7z52#
属性“properties”在类“Node”中是私有的(该类在“neo4j/graph/init.py”中)我在类“Node”中添加了以下方法:
然后,您可以通过instance_of_your_node.get_properties()访问这些属性
ozxc1zmp3#
正如我在neo4j包中看到的,类
Node
继承自Entity
类,Entity
类拥有_properties
属性。问题是这个属性不能从类Node
范围之外访问。要解决这个问题,你可以给自己定义getter:
并将此方法绑定到您
Node
示例:这样,您就不必在lib中更改任何内容。
wj8zmpe14#
很遗憾,在python中没有办法将Neo4j驱动的Node对象转换成dictionary/json对象,所以需要自己动手,这里有一个简单的方法: