Недавно я переключил свою библиотеку py2neo с версии V2 на версии V3 и не знаю новых команд для выполнения определенных операций.
В частности, я застрял с:
Сопоставьте или создайте узел по метке и необязательному свойству и верните единственный соответствующий узел. Этот метод предназначен для использования с уникальным ограничение и не завершается ошибкой, если найдено более одного соответствующего узла. (читайте документы)
например
from py2neo import Node, Graph
nicole = Node("Person", name = "Nicole", age=24)
# adds the nicole element to the graph if it does not already exist a node labelled as "Person" having attribute "name" equal to "Nicole".
graph.merge_one("Person", "name", "Nicole") #<-- What's the equivalent py2neo V3 command?
Создайте один или несколько уникальных путей или отношений в одном сделка. Это похоже на create(), но использует Cypher CREATE. Предложение UNIQUE, чтобы гарантировать, что только отношения, которые еще не существуют создаются. (читайте документы)
например
from py2neo import Node, Relationship, Graph
kenny = Node("Person", name = "Kenny")
graph.create(kenny)
kingfish = Node("Bar", name = "Kingfish")
graph.create(kingfish)
rel = Relationship(kenny, "LIKES", kingfish)
# creates the relationship (kenny)-[:LIKES]->(kingfish), but only if it does not exist yet.
graph.create_unique(rel) #<-- What's the equivalent py2neo V3 command?
Найдите один узел по метке и необязательному свойству. Этот метод предназначен для использования с уникальным ограничением и не выходит из строя, если больше найдено более одного соответствующего узла. (читайте документы)
например
from py2neo import Graph
# Find one node (and take only one if there are many) matching these conditions: its type is "Person" and it has an attribute "name" equal to "Kenny", and then save it inside "kenny" variable.
kenny = graph.find_one("Person", "name", "Kenny") #<-- What's the equivalent py2neo V3 command?
Я узнал, что эти методы больше не доступны в py2neo V3,
так что же эквивалентно этим методам для py2neo V3?
Это эквивалентные методы для py2neo V3 (а также для py2neo V.2020.1)
merge_one
-> merge
create_unique
-> в вашем примере это просто merge
, потому что это
достаточно, чтобы гарантировать, что
создаются только отношения, которые еще не существуют.
find_one
->
это более сложно и должно быть разделено на большее количество операций,
вы можете сделать это с помощью функции NodeMatcher
и метода match
.
Я покажу это непосредственно в примере ниже.
Вот ваши примеры, измененные на команды py2neo V3:
Сопоставьте или создайте узел по метке и необязательному свойству и верните единственный соответствующий узел. Этот метод предназначен для использования с уникальным ограничение и не завершается ошибкой, если найдено более одного соответствующего узла. ([читать документы][3])
например
from py2neo import Node, Graph
nicole = Node("Person", name = "Nicole", age=24)
# adds the nicole element to the graph if it does not already exist a node labelled as "Person" having attribute "name" and "Person" and having their values equal to those of "nicole" element.
graph.merge(nicole, "Person", "name")
Создайте один или несколько уникальных путей или отношений в одном сделка. Это похоже на create(), но использует Cypher CREATE. Предложение UNIQUE, чтобы гарантировать, что только отношения, которые еще не существуют создаются. ([читать документы][4])
например
from py2neo import Node, Relationship, Graph
kenny = Node("Person", name = "Kenny")
graph.create(kenny)
kingfish = Node("Bar", name = "Kingfish")
graph.create(kingfish)
rel = Relationship(kenny, "LIKES", kingfish)
# creates the relationship (kenny)-[:LIKES]->(kingfish), but only if it does not exist yet.
graph.merge(rel)
Найдите один узел по метке и необязательному свойству. Этот метод предназначен для использования с уникальным ограничением и не выходит из строя, если больше найдено более одного соответствующего узла. ([читать документы][5])
например
from py2neo import Graph
# Find one node (and take only one if there are many) matching these conditions: its type is "Person" and it has an attribute "name" equal to "Kenny", and then save it inside "kenny" variable.
from py2neo import NodeMatcher
matcher = NodeMatcher(graph)
kenny = matcher.match('Person', name='Kenny').first()