当前位置: 首页 > news >正文

neo4j 图数据库 py2neo 操作 示例代码

文章目录

    • 摘要
    • 前置
    • NodeMatcher & RelationshipMatcher
      • 创建节点
      • 查询获取节点
      • 节点有则查询,无则创建
      • 创建关系
      • 查询关系
      • 关系有则查询,无则创建
    • Cypher语句
      • 创建节点

摘要

利用py2neo包,实现把excel表里面的数据,插入到neo4j 图数据库中;

  • 创建新(节点或关系)到neo4j图数据库中;
  • 能够获取neo4j 中已有的(节点或关系),不再创建新(节点或关系);

进阶, 敬请期待,案例

前置

安装py2neo: pip install py2neo
安装neo4j软件,请自行安装

NodeMatcher & RelationshipMatcher

代码由 Jupyter 编写,建议使用vscode

from py2neo import Graph, Node, NodeMatcher, RelationshipMatcher
import pandas as pd# 连接到Neo4j数据库  
graph = Graph("bolt://localhost:7687", auth=("neo4j", "你设置的密码")) node_matcher = NodeMatcher(graph)
relationship_matcher = RelationshipMatcher(graph)

在这里插入图片描述

TODO: 设置neo4j 远程连接

创建节点

node = Node("Person", name="Alice", age=18)
graph.create(node)

在这里插入图片描述

查询获取节点

# 拿到匹配到的第一个节点
node_matcher.match('Person', name='Alice').first()# 拿到可匹配到的所有
node_matcher.match('Person', name='Alice').all()

节点有则查询,无则创建

def get_node(class_, **kwargs):if node := node_matcher.match(class_, **kwargs):# 节点存在,则获取return node.first()else:# 节点不存在,则创建node = Node(class_, **kwargs)graph.create(node)return node

在这里插入图片描述

创建关系

Alice - Friend -> Bob

node1 = get_node('Person', name='Alice', age=21)
node2 = get_node('Person', name='Bob', age=20)graph.create(Relationship(node1, 'Friend', node2))

在这里插入图片描述

查询关系

查询 node1 和 node2 之间是否有 Friend 关系

node1 = get_node('Person', name='Alice', age=21)
node2 = get_node('Person', name='Bob', age=20)relationship_matcher.match([node1, node2],r_type='Friend').first()

关系有则查询,无则创建

def get_relation(node1, node2, r_type):if r :=  relationship_matcher.match([node1, node2],r_type=r_type):return r.first()else:r = Relationship(node1, r_type, node2)graph.create(r)return r
# 查询已有关系
get_relation(node1, node2, 'Friend')
# 创建新关系
get_relation(node1, node2, 'Classmate')

在这里插入图片描述

Cypher语句

虽然 在 NodeMatcher & RelationshipMatcher 介绍的接口已经能够满足大部分情况的使用,本文仍想提供一种使用cypher语句的插入数据到neo4j图数据库的思路。

创建节点

graph.run("create (n:Person {name:'js'}) return n"
)
graph.run("MERGE (n:Person {name: $name}) \ON CREATE SET n.created_at = timestamp() \return n",name='Cyder'
)
http://www.lryc.cn/news/283428.html

相关文章:

  • 从uptime看linux平均负载
  • 经典数据库练习题及答案
  • 架构篇06-复杂度来源:可扩展性
  • flowable流程结束触发监听器 flowable获取结束节点 flowable流程结束事件响应监听器
  • 【Python3】【力扣题】389. 找不同
  • 【从0上手cornerstone3D】如何加载nifti格式的文件
  • c# 学习笔记 - 异步编程
  • 设置了uni.chooseLocation,小程序中打不开
  • spring retry 配置及使用
  • uni-app的组件(二)
  • 项目开发中安全问题以及解决办法——客户传进来的数据不可信
  • 解决springboot启动报Failed to start bean ‘subProtocolWebSocketHandler‘;
  • 什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(一)
  • 【多线程】认识Thread类及其常用方法
  • 多用户商业版 whisper 2.1在线搭建教程
  • HEXO搭建个人博客
  • Spring MVC学习之——RequestMapping注解
  • 鸿蒙原生应用/元服务开发-延迟任务开发实现(二)
  • 机器学习在什么场景下最常用-九五小庞
  • 利用IP应用场景API识别真实用户
  • Hugging Face怎么通过国内镜像去进行模型下载(hf-mirror.com)
  • POKT Network 开启周期性通缩,该计划将持续至 2025 年
  • LRU Cache
  • 软件测试面试题整理
  • C++三剑客之std::variant(二):深入剖析
  • 实验一 安装和使用Oracle数据库
  • 软件工程研究生后期总结
  • Java爬虫爬取图片壁纸
  • 红队打靶练习:HOLYNIX: V1
  • elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询