Предикаты py2neo NodeMatcher

#python #neo4j #py2neo

Вопрос:

Попытка использовать предикаты с NodeMatcher() помощью … я делаю здесь что-то не так?

 In [24]: nodes = NodeMatcher(neodb)

In [25]: nodes.match("Interface", ipv4=STARTS_WITH("192.168.240.170")).first()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-25-22cdc9c394bd> in <module>
----> 1 nodes.match("Interface", ipv4=STARTS_WITH("192.168.240.170")).first()

NameError: name 'STARTS_WITH' is not defined
 

Ответ №1:

Синтаксис неверен. Пожалуйста, обратитесь к этой документации: https://py2neo.org/v4/matching.html

Вы должны добавить к свойству __startswith . Например:

 nodes.match("Interface", ipv4__startswith="192.168.240.170").first()
 

Комментарии:

1. нет, это неправильно, обновленная версия поддерживает приведенный выше синтаксис: py2neo.org/2021.1/matching.html#applying-predicates

Ответ №2:

Решение заключается в том, что мне нужно было импортировать класс предикатов:

 In [13]: from py2neo.matching import STARTS_WITH
In [14]: nodes.match("Interface", ipv4=STARTS_WITH("192.168")).first()
Out[14]: Node('Interface', admin=True, description='inside', hostUUID='asa-core', ipv4='192.168.199.11/27', name='GigabitEthernet0/0', operational=True)