py2neo v4 имеет функцию first
, которую можно использовать с NodeMatcher
. Смотри: https://py2neo.org/v4/matching.html#py2neo.matching.NodeMatch.first
Тем не менее ... v4 представил GraphObjects, которые (по крайней мере, пока) я нашел довольно аккуратными.
В примере со связанным github пользователи создаются с:
user = Node('User', username=self.username, password=bcrypt.encrypt(password))
graph.create(user)
и найдено с
user = graph.find_one('User', 'username', self.username)
В py2neo v4 я бы сделал это с
class User(GraphObject):
__primarykey__ = "username"
username = Property()
password = Property()
lukas = User()
lukas.username = "lukasott"
lukas.password = bcrypt.encrypt('somepassword')
graph.push(lukas)
и
user = User.match(graph, "lukasott").first()
Функция first
, насколько я понимаю, предоставляет те же гарантии, что и find_one
, как указано в документации v3, "и не дает сбоя, если найдено более одного совпадающего узла."