py2neo:AttributeError:' function'对象没有属性'开始'

时间:2017-06-26 15:57:39

标签: python neo4j py2neo

我正在使用py2neo版本3并收到以下错误:

> GET http://localhost:7474/db/data/
< 200 OK [795]
Traceback (most recent call last):
  File "run_snomed_upload.py", line 63, in <module>
    sp = SnomedConceptProcessor()
  File "/home/arron/Downloads/Snomed/neo4j/snomed_concept_processor.py", line 18, in __init__
    tx = self.graph.run.begin()                                      # changed .cyhper to .run
AttributeError: 'function' object has no attribute 'begin'

代码:

import re
from string import Template
from py2neo import Graph
from py2neo import watch
from worker.abstract_item_processor import BaseItemProcessor



class SnomedConceptProcessor(BaseItemProcessor):
    statement = Template("CREATE (c:Concept:FSA:$label {conceptId: \"$id\", term: \"$term\", descType: $descType});")
    create_index_concept_id = "CREATE INDEX ON :Concept(conceptId)"
    create_index_term = "CREATE INDEX ON :Concept(term)"

    def __init__(self):
        watch("httpstream")
        self.graph = Graph(super().graph_url)
        tx = self.graph.run.begin() 

我已经读过,如果使用py2neo v3,那么我需要将.cypher更改为.run,您可以看到我已经完成了。我是否需要降级到py2neo v2,如果是这样的话,如何在没有并行包的情况下这样做?

1 个答案:

答案 0 :(得分:1)

Cypher.run()是一个函数,它接收Cypher语句和参数字典作为参数。您不是将Cypher.run()称为函数,也不是提供参数。

The docs说:

  

注意:以前版本的py2neo允许Cypher执行   Graph.cypher.execute()。现在可以通过此工具访问此工具   Graph.run()并返回一个延迟评估的Cursor而不是一个   热切评估的RecordList。

相同的文档显示了Cypher.run()的使用示例。

>>> from py2neo import Graph
>>> graph = Graph(password="excalibur")
>>> graph.run("MATCH (a:Person) RETURN a.name, a.born LIMIT 4").data()
[{'a.born': 1964, 'a.name': 'Keanu Reeves'},
 {'a.born': 1967, 'a.name': 'Carrie-Anne Moss'},
 {'a.born': 1961, 'a.name': 'Laurence Fishburne'},
 {'a.born': 1960, 'a.name': 'Hugo Weaving'}]