python - 如何使用 py2neo 删除 Neo4j 中的节点?
问题描述
使用 py2neo v4 连接到我的 Neo4j 数据库,我无法通过 py2neo 删除节点,运行在浏览器中的 Cypher 中运行良好的查询。当然,Neo4j 或 py2neo 都没有真正的文档,所以希望我能在这里得到一些帮助。有类似的问题,但从那时起 Neo4j 和 py2neo 都有新版本,这些问题/答案要么针对其他特定情况,要么是过时的方法。
首先,我定义了这个函数:
def deleteNode(thisNodeID):
graph.run("MATCH (n) where id(n) = $nodeID DETACH DELETE n",
parameters={"nodeID":thisNodeID})
然后我像这样调用函数:
badObjectIDs = [268569,268535,268534]
for badID in badObjectIDs:
deleteNode(badID)
这运行没有任何问题,但不会删除任何内容,并且当我通过浏览器搜索时,具有这些 ID 的节点仍在数据库中。
我也尝试过使用 py2neo 的graph.delete()
方法,但我还是无法让任何东西工作,因为文档中没有描述或示例来让它工作。我什至找不到通过文档中的 ID 获取节点的方法。类似的东西
graph.delete(matcher.match("Person"))
应该删除所有带有“Person”标签的节点,但它会引发错误
TypeError: No method defined to delete object <py2neo.matching.NodeMatch object at 0x0000026F52A8DC50>
所以这实际上只是使用 py2neo 的一个基本问题,应该在文档或初学者教程中清楚地解释,但同样,在我能找到的任何地方都没有使用这些方法的示例。
如何使用 py2neo 从我的 Neo4j 数据库中删除节点?
解决方案
你必须.commit()
tx = graph.begin()
matcher = NodeMatcher(graph)
node = matcher.get(node_id)
tx.delete(node)
tx.commit()
推荐阅读
- machine-learning - 如何检查新数据的深度嵌入式聚类?
- javascript - 如何在移动设备上通过触摸左右制作这张幻灯片?
- java - 如何在Android上对同一代码设置两个权限
- arrays - 组合数组以获取哈希数组
- c# - IndexOutOfRangeException:尝试访问 GameObject 数组时,数组索引超出范围?
- postgresql - ORDER BY 会影响多个 WHERE 条件吗?
- android - Unity VR 场景到 2D 场景
- c - 如何从C中的单个文件中提取多个字符串
- java - Spring cloud netflix eureka server - 启动时出现tomcat错误
- android - 如何在 MVP 中测试读取/更新文件?