Neo4j Как получить доступ к свойствам узла в python - PullRequest
1 голос
/ 04 марта 2020

Я могу сделать запрос к базе данных графа, как это

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

Как я могу получить доступ к каждому свойству узла?

1 Ответ

2 голосов
/ 04 марта 2020

Вы можете сохранить данные объекта BoltStatmentResult, а затем получить доступ к свойствам узла с помощью метода Node.get ():

q1="MATCH (n {id:0}) return n"
nodes = session.run(q1)
results = [record for record in nodes.data()]

# Now you can access the Node using the key 'n' (defined in the return statement):
res[0]['n'].get('host_image')

Я назвал элемент 'record' в итерации node.data (), потому что если ваш RETURN вернул более одного элемента, то запись! = узел. Это словарь предметов в ВОЗВРАЩЕНИИ.

Затем вы можете получить доступ к любому из методов типа данных узла, вот справочник документов

Например:

node = res[0]['n']
labels = list(node.labels)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...