Не понимаю, почему этот AttributeError: у объекта 'Graph' нет атрибута 'merge_one' происходит - PullRequest
0 голосов
/ 26 декабря 2018

Я следую учебному пособию и использую последний python2 (homebrew) с PyCharm (с настроенным интерпретатором проекта) - Но я застрял в этой части:

from py2neo import Graph, Node
graph = Graph()
nicole = Node("Person", name="Nicole")
graph.create(nicole)
graph.delete(nicole)
nicole = graph.merge_one("Person", "name", "Nicole")

Ошибка:

Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
AttributeError: 'Graph' object has no attribute 'merge_one'

Я уже проверил документацию , и кажется, что я все делаю хорошо.Я попытался удалить и установить последнюю версию py2neo, но безуспешно.Как мне решить эту проблему?

Ожидаемое поведение: Запуск этой команды из консоли python2: если этот Person существует, не дублируйте его, а измените его значения, если он не существует, создайте его.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Я быстро закончил тем, что использовал версию 4, а не 2. Таким образом, использование Graph.merge, как предложил @littlebenlittle, решило проблему:

jonh = Node("Person", name="Jonh", age = 21)
graph.create(jonh)
ana = Node("Person", name="Ana", age = 44)
graph.create(ana)
michael = Node("Person", name="Ana", age = 33)
graph.merge(michael, "Person", "name") # So the age of Ana will change to 33, as expected.

Для использования команд, связанных с моим вопросом,должна быть установлена ​​версия 2, например.напрямую из репо py2neo:

pip install https://github.com/technige/py2neo/archive/release/2.0.7.zip
0 голосов
/ 26 декабря 2018

Из проверки исходного кода , я думаю, что функция, которую вы ищете - Graph.match_one.Также есть функция Graph.merge, но она не принимает Node в качестве аргумента.

...