Neo4j 在Jupyter笔记本中运行py2neo语句时出现AttributeError和ValueError

Neo4j 在Jupyter笔记本中运行py2neo语句时出现AttributeError和ValueError,neo4j,jupyter-notebook,py2neo,Neo4j,Jupyter Notebook,Py2neo,尝试创建唯一约束或简单合并语句时,接收AttributeError和ValueError。然而,约束/节点是在Neo4j数据库中创建的 Am使用py2neo==2020.0.0 ##创建唯一性约束(带名称) cypher_str=“创建约束UniqueAirportNameConstraint ON(a:Airport)断言a.name是唯一的” 运行图(cypher_str) ##合并 params=[{'airline':'3K','seats':500,'出发':'0915}] q=”“”

尝试创建唯一约束或简单合并语句时,接收
AttributeError
ValueError
。然而,约束/节点是在Neo4j数据库中创建的

Am使用
py2neo==2020.0.0

##创建唯一性约束(带名称)
cypher_str=“创建约束UniqueAirportNameConstraint ON(a:Airport)断言a.name是唯一的”
运行图(cypher_str)
##合并
params=[{'airline':'3K','seats':500,'出发':'0915}]
q=”“”
将$data作为数据展开
合并(s:时间表)
"""
run(q,{“data”:params})
收到错误:

---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
~/miniconda3/envs/neo4j/lib/python3.7/site-packages/py2neo/database/work.py in_uuu______________(self、记录、键)
889尝试:
-->890 k=records.keys()
891除属性错误外:
AttributeError:“列表”对象没有属性“键”
在处理上述异常期间,发生了另一个异常:
ValueError回溯(最近一次调用上次)
调用中的~/miniconda3/envs/neo4j/lib/python3.7/site-packages/IPython/core/formatters.py(self,obj)
700 type\u PPRINTS=self.type\u打印机,
701延迟的打印机=自延迟的打印机)
-->702打印机。漂亮(obj)
703打印机。刷新()
704返回流。getvalue()
漂亮(self,obj)中的~/miniconda3/envs/neo4j/lib/python3.7/site-packages/IPython/lib/pretty.py
392如果cls不是对象\
393和可调用(cls.dict.get(“报告”):
-->394返回报告(obj、自我、循环)
395
396返回默认值(对象、自身、循环)
~/miniconda3/envs/neo4j/lib/python3.7/site-packages/IPython/lib/pretty.py in_repr_pprint(obj,p,cycle)
698“”“一个仅重定向到正常repr函数的pprint。”“”
699#找到换行符并替换为p.break())
-->700输出=repr(obj)
701行=输出。拆分行()
702带p.组():
~/miniconda3/envs/neo4j/lib/python3.7/site-packages/py2neo/database/work.py in___________(self)
367
368定义报告(自我):
-->369返回报告(自我预览(3))
370
371定义下一个定义(自身):
预览中的~/miniconda3/envs/neo4j/lib/python3.7/site-packages/py2neo/database/work.py(self,limit)
497值=自身。\u消火栓。水合物(键、值、实体=自身。\u实体,版本=v)
498记录。追加(值)
-->499返回表(记录、键)
500
501 def评估(自我,字段=0):
~/miniconda3/envs/neo4j/lib/python3.7/site-packages/py2neo/database/work.py in_uuu______________(self、记录、键)
890 k=records.keys()
891除属性错误外:
-->892提升值错误(“缺少键”)
893宽度=长度(k)
894 t=[范围内(宽度)内的uu的set()]
ValueError:缺少密钥

根本原因似乎是两个Cypher语句都没有返回值,出于某种原因,返回的游标(
py2neo.database.work.cursor
)希望返回该值

一个简单的解决方法是将输出分配给变量,例如:

##创建唯一性约束(带名称)
cypher_str=“创建约束UniqueAirportNameConstraint ON(a:Airport)断言a.name是唯一的”
response=graph.run(cypher\u str)
##合并
params=[{'airline':'3K','seats':500,'出发':'0915}]
q=”“”
将$data作为数据展开
合并(s:时间表)
"""
response=graph.run(q,{“data”:params})
注意:
response
变量可能会被一次性变量
\uu
替代


对于
MERGE
语句,我们还可以通过添加
return1
或一些有用的东西来避免此错误。

看起来像个bug。请在GitHub repo中打开一个问题,我将添加一个修复。已添加在。感谢@NigelSmall提供的
py2neo
。它相当容易使用。我还没有深入试用过OGM,我推荐neo4j而不是py2neo。它由Neo4j直接支持。