Как передать параметр как имя свойства в py2neo? - PullRequest
1 голос
/ 11 апреля 2019

Я получаю ошибку при передаче параметра в качестве имени свойства.Я не получил никакой ошибки при передаче параметра в качестве значения свойства, написав {param}.Но это не работает в случае передачи параметра в качестве имени свойства.

Вот мой код.

query = 'Merge(c1:Customer{user_id: {user_id1},{user_id2}:{cell}})'
g.run(query, user_id1=int(row['user_id']), user_id2=str(cidx),cell=cell) 

Здесь cidx, cell, row['user_id'] - параметры.

{user_id1} параметр работает.

Но для добавления имени свойства {user_id2} не требуется *1012*

1 Ответ

0 голосов
/ 11 апреля 2019

Запросы Cypher не могут быть параметризованы именами свойств.

Параметры могут использоваться для:

  • литералы и выражения
  • идентификаторы узлов и отношений
  • только для явных индексов: значения индекса и запросы

Параметры не могут использоваться для следующих конструкций, поскольку они образуют часть структуры запроса, которая компилируется в план запроса:

  • ключи свойств; Итак, MATCH (n) WHERE n.$param = 'something' недействительно

  • типы отношений

  • этикетки

Подробнее см. Документация Neo4j .

EDIT:

Вы можете отформатировать строку, чтобы добавить имя свойства как:

query = 'Merge(c1:Customer{user_id: {user_id1}, %s :{cell}})' % str(cidx)

Удалить параметр user_id2 из метода запуска:

g.run(query, user_id1=int(row['user_id']), cell=cell) 
...