Изменить свойства узла с помощью транзакции 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()}
);