Neo4j学习笔记1:增删改查

目录

  • 安装
  • 练习节点和关系结构
  • 连接数据库
  • 添加节点
    • 1. Cypher
    • 2. Py2neo
  • 添加关系
    • 1. Cypher
    • 2. Py2neo
  • 批量添加
    • 1. Cypher
    • 2. Py2neo
  • 查询
    • 1. Cypher
    • 2. Py2neo
  • 更新
    • 1. Cypher
    • 2. Py2neo
  • 删除
    • 1. Cypher
    • 2. Py2neo

安装

这边直接下载了Neo4j Desktop+安装py2neo,安装后就可直接使用

pip install py2neo

练习节点和关系结构

类型字段1字段2字段3字段4
nodeidnametypeindustry
linksourcerelationtarget-

连接数据库

Desktop直接打开,用Neo4j Browser打开就行,很方便
下面这个是使用Py2neo库链接数据库

from py2neo import Graph, Node, Relationship# 连接到Neo4j
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))

添加节点

1. Cypher

在Neo4j Browser中可以直接输入命令

CREATE (n:Node {id:1, name:'Alice', type:'Person', industry:'software'})

2. Py2neo

# 创建节点
a = Node("Node", id=1, name="Alice", type="Person", industry="software")
graph.create(a)
b = Node("Node", id=2, name="Bom", type="Person", industry="hardware")
graph.create(b)

添加关系

1. Cypher

MATCH (a:Node),(b:Node)
WHERE a.name = 'Alice' AND b.name = 'Bom'
CREATE (a)-[r:KNOWS] -> (b)
RETURN r

2. Py2neo

这里的a,b是承接上一部分的添加节点的代码

# 创建关系
rel = Relationship(a, "KNOWS", b)
graph.create(rel)

批量添加

本人测试下来,这两种方法,后者速度更快

1. Cypher

这边的文件得放在neo4j文件夹下的import文件夹里
node

LOAD CSV WITH HEADERS FROM 'file:///nodes.csv' AS row
CREATE (n:Node {id: row.id, name: row.name, type: row.type, industry: row.industry});

relation

LOAD CSV WITH HEADERS FROM 'file:///links.csv' AS row
MATCH (source:Node {id: row.source}), (target:Node {id: row.target})
MERGE (source)-[r:RELATIONSHIP {type: row.relation}]->(target);

2. Py2neo

node

import pandas as pd
from tqdm import tqdm# 读取CSV文件
df = pd.read_csv("path/to/your/nodes.csv")# 使用tqdm显示进度条
for index, row in tqdm(df.iterrows(), total=df.shape[0]):# 创建节点,这里假设CSV有'name', 'type', 'industry'列node = Node("Node", id=row['id'], name=row['name'], type=row['type'], industry=row['industry'])# 将节点添加到图中graph.create(node)

relation

# 读取关系CSV文件
df_relations = pd.read_csv("path/to/your/relations.csv")for index, row in df_relations.iterrows():source_node = matcher.match("Node", id=row['source']).first()target_node = matcher.match("Node", id=row['target']).first()if source_node and target_node:rel = Relationship(source_node, row['relation'], target_node)graph.create(rel)

查询

1. Cypher

MATCH (n:Node) 
WHERE n.industry = 'software' 
RETURN n

2. Py2neo

# 查询所有类型为"Person"的节点
query = "MATCH (n:Node) WHERE n.industry = 'software' RETURN n"
nodes = graph.run(query)
for node in nodes:print(node)

更新

1. Cypher

MATCH (n:Node {name: 'Alice'})
SET n.industry = 'IT'
RETURN n

2. Py2neo

# 查找名为Alice的节点并更新其行业
alice = matcher.match("Node", name="Alice").first()
if alice:alice['industry'] = 'IT'graph.push(alice)

删除

1. Cypher

MATCH (n:Node)-[r:KNOWS]->()
DELETE r

2. Py2neo

方法一:查询节点后删除

# 删除名为Bom的节点
bom = graph.nodes.match("Node", name="Bom").first()
graph.delete(bom)

方法二:运行CYPHER语句

#删除特定属性的节点,例如删除所有industry为"hardware"的节点
query = "MATCH (n:Node {industry: 'hardware'}) DELETE n"
graph.run(query)# 删除特定类型的关系,例如删除所有KNOWS关系
query = "MATCH ()-[r:KNOWS]-() DELETE r"
graph.run(query)

如果有帮助到你,能点个赞嘛!!谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sora,“天使”的两副面孔

在科技的天空中,总有一些耀眼的新星,它们的出现让整个世界为之震撼。2月16日,这样的时刻再次到来。谷歌与OpenAI两大科技巨头几乎同时宣布了各自在人工智能领域的最新突破——Gemini 1.5 Pro与Sora大模型的面世。 作为业界翘楚,谷…

iOS面试:4.多线程GCD

一、多线程基础知识 1.1 什么是进程? 进程是指在系统中正在运行的一个应用程序。对于电脑而已,你打开一个软件,就相当于开启了一个进程。对于手机而已,你打开了一个APP,就相当于开启了一个进程。 1.2 什么是线程&am…

算法题目中图和树的存储

邻接表的方式存储图和树 这就是邻接表,就是将每个结点的孩子结点用链表表示出来,再将所有结点以数组形式连起来。 存储树和图我们需要三个数组,h[N], e[N], ne[N],分别表示邻接表,结点值,结点的next值,h[i…

[项目管理-36]:敏捷开发模式与增量开发模式的比较

目录 一、增量开发模式 二、敏捷开发模式 三、比较 相似之处: 区别之处: 不同之处进一步比较 一、增量开发模式 增量开发模式是一种软件开发方法,其中将软件系统划分为若干个相对独立的部分,分别进行开发和测试&#xff0c…

面试经典150题——快乐数

​"Success is not final, failure is not fatal: It is the courage to continue that counts." - Winston Churchill 1. 题目描述 2. 题目分析与解析 2.1 思路一 还是最简单的,模拟最直观的思路,就是进行一个while循环。比如:…

yolov8-seg dnn调用

接上篇一直更换torch、opencv版本都无法解决这个问题(seg调用dnn报错)。那问题会不会出在yolov8源码本身呢。yolov8的讨论区基本都看过了,我决定尝试在其前身yolov5的讨论区上找找我不信没人遇到这个问题。很快找到下面的讨论第一个帖子&…

20个改善编码的Python异常处理技巧,让你的代码更高效

异常处理是写好代码的一个重要的方面,虽然许多开发人员都熟悉基本的try-except块,但是有很多更深入的知识可以使异常处理更高效、更可读和更python化。所以本文将介绍关于Python异常的20个可以显著改善编码的Python异常处理技巧,这些技巧可以…

软件性能测试和功能测试有何联系和区别?第三方软件检测机构简析

软件性能测试和功能测试是软件开发过程中非常重要的两个环节。从根本上说,它们都是为了保证软件质量和可靠性,但它们的目标和方法却有所不同。 软件性能测试是评估软件在特定负载下的性能表现,包括响应时间、吞吐量、并发能力等指标。它通过…

Jenkins详解

目录 一、Jenkins CI/CD 1、 Jenkins CI/CD 流程图 2、介绍 Jenkins 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 3、安装Jenkins 1、安装JDK 2、安装tomcat 3.安装maven 4安装jenkins 5.启动tomcat,并页面访问 5.添加节点 一、Jenkins CI/…

链表的建立,初始化,及输出

初识链表照着书上敲了完整的&#xff0c;大家看看哪里有问题&#xff01;欢迎留言&#xff01; 创建链表节点 单链表初始化 单链表的建立 /*链表的初始化、创建以及输出*/ #include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<string.…

Opencv实战(2)绘图与图像操作

Opencv实战(2)绘图与图像操作 指路前文&#xff1a;Opencv实战(1)读取与像素操作 三、基本绘图 文章目录 Opencv实战(2)绘图与图像操作三、基本绘图(1).line(2).rectangle(3).circle 四、图像处理(1).颜色空间1.意义2.cvtColor()3.inRange()4.适应光线 (2).形态操作1.腐蚀2.膨…

Python语句(一)【条件语句】

条件语句&#xff1a;通过一条或多条语句的执行结果&#xff08;True或者False&#xff09;来决定执行的代码块。 其程序流程图如下&#xff1a; 条件语句包括&#xff1a;if 判断条件&#xff1a;执行语句…… else&#xff1a;执行语句……orif 判断条件1:执行语句1…… el…

如何将一个字符串中的字符提取出来(Python与C/C++)

Python&#xff1a; 1.使用遍历方法&#xff1a; string "Hello World" characters [] for char in string:characters.append(char) print(characters) #输出[H, e, l, l, o, , W, o, r, l, d] 2.使用列表推导式&#xff1a; string "Hello World" …

carl 哈希表

1.有效的字母异位词 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_map<int, int> mymap;unordered_set<int> result;for (int i 0; i < nums1.size(); i){/* code */if …

电商+支付双系统项目------项目部署到服务器

我已经把这个项目的所有模块都做好了。那么&#xff0c;现在我们要做的就是将这个项目部署发布了。其实关于部署发布网上有很多的文章都会教&#xff0c;我就不写哪些很具体的步骤了&#xff0c;我就简单的总结一下怎么部署这个项目&#xff0c;让大家对项目部署有一个整体的认…

【Linux】Ubuntu内存管理

简单介绍下Ubuntu中关于内存的相关操作。起因是当服务器运行久了之后&#xff0c;感觉内存、缓存、swap分区有很多垃圾&#xff0c;影响运行。 1.sync命令 sync&#xff1a;这个命令会将系统缓存的数据写入磁盘&#xff0c;从而释放内存 2.free 查看当前内存使用情况 free …

kubernetes的网络flannel与caclio

flannel网络 跨主机通信的一个解决方案是Flannel&#xff0c;由CoreOS推出&#xff0c;支持3种实现&#xff1a;UDP、VXLAN、host-gw udp模式&#xff1a;使用设备flannel.0进行封包解包&#xff0c;不是内核原生支持&#xff0c;上下文切换较大&#xff0c;性能非常差 vxlan模…

瑞_23种设计模式_装饰者模式

文章目录 1 装饰者模式&#xff08;Decorator Pattern&#xff09;1.1 介绍1.2 概述1.3 装饰者模式的结构 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析5 总结5.1 装饰者模式的优缺点5.2 装饰者模式的使用场景5.3 装饰者模式 VS 代理模式 &#x…

dpdk环境搭建和工作原理

文章目录 1、DPDK环境搭建1.1、环境搭建1.2、编译DPDK 2、DPDK工作原理 1、DPDK环境搭建 1.1、环境搭建 工具准备&#xff1a;VMware、ubuntu16.04。 &#xff08;1&#xff09;VMware添加两个网卡。桥接网卡作为 DPDK 运行的网卡&#xff0c;NAT 网卡作为 ssh 连接的网卡。 …

【动态规划】【前缀和】【推荐】2463. 最小移动总距离

作者推荐 【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子 本文涉及知识点 动态规划汇总 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 2463. 最小移动总距离 X 轴上有一些机器人和工厂。给你一个整数数组 robot &#xff0c…