将neo4j中一个节点的全部关系移动到另一个节点上面,采用先建立新关系,之后删除原先的关系的方式

 def move_relations(source_node_id,target_node_id,graph=None):
"""
将 source_node_id 上所有的关系移动到 target_node_id 上
"""
if source_node_id is None or target_node_id is None:
return
if graph is None:
graph = get_graph()
r_ids = []
match = "match (x)-[r]-(n) where id(x)=%s return r" % (source_node_id)
data = graph.run(match).data()
for d in data:
for tk,tv in d.items():
relations = tv.relationships
for r in relations:
if r.identity in r_ids:
continue
r_ids.append(r.identity) from_id = 0
to_id = 0
if r.start_node.identity == source_node_id:
from_id = target_node_id
to_id = r.end_node.identity
else:
from_id = r.start_node.identity
to_id = target_node_id
labels = ""
if r.types() is not None:
for la in r.types():
labels+=":" + la
fields = []
fields_str = ""
for k,v in r.items():
fields.append("%s:'%s'" % (k,v))
if len(fields) > 0:
fields_str = ",".join(fields)
fields_str = "{%s}" % fields_str
match = "match (x),(y) where id(x)=%s and id(y)=%s create (x)-[r%s%s]->(y) return id(r)" % (from_id,to_id,labels,fields_str)
result=graph.run(match).data()
if result is None or len(result)==0:
return False
match = "match ()-[r]-() where id(r)=%s delete r" % (r.identity)
graph.run(match)
return True return

最新文章

  1. 如何在自己的代码中实现分享视频文件或者是图片文件到微信 QQ微博 新浪微博等!!!
  2. Mybatis-Spring集成
  3. 免费SVN空间
  4. C#设计模式-工厂模式
  5. Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning
  6. Mybatis那一大堆事儿--1
  7. eclipse 在Navigator视图中查看资源
  8. WinServer 之 Windows Server 2008 R2安装IIS
  9. oracle的控制语句if和循环语句loop while for
  10. 自己画一个ActivityIndicatorView-b
  11. c++ 最短路两种算法
  12. windows程序设计读书笔记4——字符显示3
  13. pickle模块
  14. Visual Studio + Qt开发环境搭建
  15. Laravel项目部署上线(阿里云 Ubuntu 16.04)
  16. Octoroit OS VB操作系统简单介绍
  17. Django(十二)—关于查询知识点总结
  18. Maven学习 三 Maven与Eclipse结合使用
  19. CF835F Roads in the Kingdom/UOJ126 NOI2013 快餐店 树的直径
  20. 单元测试-代码覆盖率 EclEmma

热门文章

  1. 【luogu1468】[Violet]蒲公英--求区间众数
  2. AcWing:242. 一个简单的整数问题(树状数组)
  3. CF1200C
  4. IntelliJ跳转到抽象方法的实现
  5. IE与其他浏览器兼容性问题总结
  6. MySQL 创建和删除数据表
  7. 5.性能测试工具比较:Jmeter和LR
  8. jquery 对svg 元素的addClass removeClass 支持
  9. 5G 与 MEC 边缘计算
  10. VLC-DSS搭建直播系统中链路断开影响测试