Изменить свойства узла с помощью транзакции py2neo

Я пытаюсь обновить узел, используя py2neo как часть транзакции.

Проблема в том, что я не могу найти эквивалент Graph.push() такие как Transaction.Push(), Я что-то упускаю из виду?

Мой код на данный момент выглядит следующим образом, я хотел бы разрешить очевидное ???? немного.

def write_to_database( self, t: Transaction ) -> None:

    n = None
    use_existing = False

    # Not part of the transaction:
    n = t.graph.find_one( "Node", "name", self.name( ) )

    if n:
        use_existing = True
    else:
        n = Node(label)
        n[ "name" ] = self.name( )

    n["size"] = self.get_size()


    if use_existing:
        t.??????????????? # Put this in the transaction!
    else:
        t.create( n )

В качестве примера использования я использую транзакцию, потому что она выполняется быстрее в течение тысяч операций, а не потому, что мне требуется функция отката.

1 ответ

Ваше тело метода может быть заменено следующим, которое выполняет эквивалентный оператор Cypher в транзакции:

t.run(
  "MERGE (n:Node {name: {name}}) SET n.size = {size}",
  {"name": self.name(), "size": self.get_size()}
);
Другие вопросы по тегам