Встраивание лампочек neo4j и удаление в шифре

Я использую REST API neo4j через лампочки, и я попытался удалить узел вместе со всеми связанными ребрами с помощью шифра следующим образом:

from bulbs.neo4jserver import Graph as Neo4jGraph
db = Graph()

query = '''START d=node(57)
           MATCH d-[r]-()
           DELETE d,r
        '''
t = db.cypher.execute(query)

(где db — обработчик базы данных neo4j).

... и, кажется, это не сработает. Далее следует длинный отчет об ошибке:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/tobias/Esk/Dev/liquidDemocracyLight/venv/local/lib/python2.7/site-packages/bulbs/neo4jserver/cypher.py", line 31, in execute
    return self.client.cypher(query, params)
  File "/home/tobias/Esk/Dev/liquidDemocracyLight/venv/local/lib/python2.7/site-packages/bulbs/neo4jserver/client.py", line 403, in cypher
    resp = self.request.post(path, params)
  File "/home/tobias/Esk/Dev/liquidDemocracyLight/venv/local/lib/python2.7/site-packages/bulbs/rest.py", line 126, in post
    return self.request(POST, path, params)
  File "/home/tobias/Esk/Dev/liquidDemocracyLight/venv/local/lib/python2.7/site-packages/bulbs/rest.py", line 181, in request
    return self.response_class(http_resp, self.config)
  File "/home/tobias/Esk/Dev/liquidDemocracyLight/venv/local/lib/python2.7/site-packages/bulbs/neo4jserver/client.py", line 217, in __init__
    self.handle_response(response)
  File "/home/tobias/Esk/Dev/liquidDemocracyLight/venv/local/lib/python2.7/site-packages/bulbs/neo4jserver/client.py", line 249, in handle_response
    response_handler(response)
  File "/home/tobias/Esk/Dev/liquidDemocracyLight/venv/local/lib/python2.7/site-packages/bulbs/rest.py", line 36, in bad_request
    raise ValueError(http_resp)
ValueError: ({'status': '400', 'content-length': '3989', 'content-encoding': 'UTF-8', 'server': 'Jetty(6.1.25)', 'access-control-allow-origin': '*', 'content-type': 'application/json'}, '{\n  "message" : "expected return clause\\n\\"           DELETE d,r\\"\\n            ^",\n  "exception" : "org.neo4j.server.rest.repr.BadInputException: expected return clause\\n\\"           DELETE d,r\\"\\n 

Я делаю что-то неправильно? Нельзя ли удалить узлы с помощью шифровальных запросов через лампочки?


person phynfo    schedule 22.11.2012    source источник


Ответы (2)


Похоже, вы используете старую версию Neo4j? DELETE был добавлен только в 1.8.

person Eve Freeman    schedule 22.11.2012
comment
также не уверен, что удаление узла до его отношений не будет проанализировано. - person ulkas; 22.11.2012
comment
Так и будет, если они находятся в одном операторе удаления. - person Eve Freeman; 22.11.2012

Bulbs имеет встроенный метод для удаления узла/вершины со всеми их связями.

>>> from bulbs.neo4jserver import Graph
>>> g = Graph()
>>> g.vertices.delete(57)

См. http://bulbflow.com/docs/api/bulbs/element/#vertex-proxy

Для этого в методе Bulbs delete() под капотом используется скрипт Gremlin, поскольку Neo4j Server не предоставляет единую конечную точку для удаления вершины вместе со всеми входящими в нее ребрами.

Вот как выглядит код:

Обратите внимание, что приведенный выше скрипт Gremlin использует метод Blueprints removeVertex() (который встроен в Neo4j Server), потому что он заботится об удалении всех инцидентных ребер за вас.

См. https://github.com/tinkerpop/blueprints/blob/master/blueprints-neo4j-graph/src/main/java/com/tinkerpop/blueprints/impls/neo4j/Neo4jGraph.java#L409< /а>

person espeed    schedule 23.11.2012