Neo4j Python 驱动库完整教程(带输入输出示例)

Neo4j Python 驱动库完整教程(带输入输出示例)

1. 基础连接示例

输入代码

from neo4j import GraphDatabase# 连接配置
URI = "bolt://localhost:7687"
USER = "neo4j"
PASSWORD = "password123"  # 替换为你的实际密码def test_connection():driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))try:driver.verify_connectivity()server_info = driver.get_server_info()print("连接信息:")print(f"地址: {URI}")print(f"版本: {server_info.agent}")except Exception as e:print(f"连接失败: {e}")finally:driver.close()test_connection()

示例输出

连接信息:
地址: bolt://localhost:7687
版本: Neo4j/5.13.0

2. 基本CRUD操作

输入代码

class Neo4jCRUD:def __init__(self, uri, user, password):self.driver = GraphDatabase.driver(uri, auth=(user, password))def create_person(self, name, age):with self.driver.session() as session:result = session.execute_write(self._create_person, name, age)return result@staticmethoddef _create_person(tx, name, age):query = ("CREATE (p:Person {name: $name, age: $age}) ""RETURN p.name AS name, p.age AS age")result = tx.run(query, name=name, age=age)return result.single()# 使用示例
crud = Neo4jCRUD(URI, USER, PASSWORD)
print("创建节点:")
result = crud.create_person("Alice", 30)
print(result)
crud.close()

示例输出

创建节点:
{'name': 'Alice', 'age': 30}

3. 查询操作

输入代码

def find_person(name):driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:result = session.execute_read(lambda tx: tx.run("MATCH (p:Person {name: $name}) RETURN p",name=name).single())return dict(result["p"]) if result else Noneprint("\n查询结果:")
alice = find_person("Alice")
print(alice)

示例输出

查询结果:
{'name': 'Alice', 'age': 30}

4. 关系创建

输入代码

def create_movie_and_relationship():driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:# 创建电影节点movie = session.execute_write(lambda tx: tx.run("CREATE (m:Movie {title: $title, year: $year}) RETURN m",title="The Matrix", year=1999).single())# 创建关系relationship = session.execute_write(lambda tx: tx.run("""MATCH (p:Person {name: $name}), (m:Movie {title: $title})CREATE (p)-[r:ACTED_IN {role: $role}]->(m)RETURN p.name, type(r), m.title""",name="Alice", title="The Matrix", role="Neo").single())return relationshipprint("\n创建关系结果:")
rel_result = create_movie_and_relationship()
print(rel_result)

示例输出

创建关系结果:
{'p.name': 'Alice', 'type(r)': 'ACTED_IN', 'm.title': 'The Matrix'}

5. 复杂查询

输入代码

def find_actors_in_movie(movie_title):driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:result = session.execute_read(lambda tx: tx.run("""MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)WHERE m.title = $titleRETURN p.name AS actor, r.role AS role""",title=movie_title).data())return resultprint("\n电影演员查询:")
actors = find_actors_in_movie("The Matrix")
for actor in actors:print(f"{actor['actor']} 饰演 {actor['role']}")

示例输出

电影演员查询:
Alice 饰演 Neo

6. 批量导入示例

输入代码

def batch_import_people():people = [{"name": "Bob", "age": 25},{"name": "Charlie", "age": 35},{"name": "David", "age": 40}]driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:result = session.execute_write(lambda tx: tx.run("UNWIND $people AS person ""CREATE (p:Person {name: person.name, age: person.age}) ""RETURN count(p) AS count",people=people).single())return result["count"]print("\n批量导入结果:")
count = batch_import_people()
print(f"成功导入 {count} 个人物节点")

示例输出

批量导入结果:
成功导入 3 个人物节点

7. 图形数据可视化示例

输入代码

def visualize_graph():driver = GraphDatabase.driver(URI, auth=(USER, PASSWORD))with driver.session() as session:# 查询图形结构result = session.execute_read(lambda tx: tx.run("""MATCH (p:Person)-[r]->(m)RETURN p, r, mLIMIT 10""").graph())# 打印图形结构信息print("\n图形结构信息:")print(f"节点数量: {len(result.nodes)}")print(f"关系数量: {len(result.relationships)}")# 打印前3个节点的详细信息print("\n节点示例:")for i, node in enumerate(list(result.nodes)[:3], 1):print(f"节点 {i}: {dict(node)}")# 打印关系示例print("\n关系示例:")for rel in list(result.relationships)[:2]:print(f"{rel.start_node['name']} -[{rel.type}]-> {rel.end_node['title']}")visualize_graph()

示例输出

图形结构信息:
节点数量: 5
关系数量: 1节点示例:
节点 1: {'name': 'Alice', 'age': 30}
节点 2: {'title': 'The Matrix', 'year': 1999}
节点 3: {'name': 'Bob', 'age': 25}关系示例:
Alice -[ACTED_IN]-> The Matrix

这些示例展示了从基础连接到复杂查询的完整流程,每个示例都包含明确的输入代码和对应的预期输出结果。

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

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

相关文章

Axios 和 Promise 区别对比

Axios 和 Promise 是前端开发中两个不同的概念,尽管 Axios 基于 Promise 实现,但它们的核心定位和功能有显著区别。以下是对比分析: 1. 核心定位与功能Promise 定义:Promise 是 JavaScript 的异步编程方案,用于处理异步…

Git分支管理与工作流详解

前言 分支管理是Git最强大的功能之一,它允许开发者在不影响主代码库的情况下创建独立的工作空间。本文将详细介绍Git分支的操作和常见工作流策略,帮助团队更高效地协作开发。 1. Git分支的基本概念 1.1 什么是分支 在Git中,分支本质上是指…

【flutter】flutter网易云信令 + im + 声网rtm从0实现通话视频文字聊天的踩坑

接了一个国外的项目,项目采用网易云im 网易云信令声网rtm遇到的一些问题这个项目只对接口,给的工期是两周,延了工期,问题还是比较多的 需要全局监听rtm信息,收到监听内容,引起视频通话网易云给的文档太烂,所有的类型推策只能文档一点点推声网的rtm配置网易云的信令,坑太多,比如…

hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换

我用的是hive版本是3.1.3,spark版本是3.3.1,它们的unix_timestamp 函数在同样的语句下转换出来的时间戳是完全不同的,如下试验所示1.unix_timestamp 函数的坑上图试验中我同样的计算 2025-07-11 10:00:00 时间点对应的时间戳,但是…

MyBatis专栏介绍

专栏导读 在当今的软件开发领域,持久层框架的选择对于提高开发效率和数据处理能力至关重要。MyBatis作为一个半自动化的ORM框架,因其灵活、高效的特点,在众多开发者中广受好评。本专栏《MyBatis实战》旨在通过深入浅出的方式,帮助…

HarmonyOS从入门到精通:自定义组件开发指南(七):自定义事件与回调

HarmonyOS从入门到精通:自定义组件开发指南(七):自定义事件与回调 在HarmonyOS应用开发中,组件化架构是构建复杂界面的基础,而组件间的高效通信则是实现业务逻辑的核心。自定义事件与回调机制作为组件交互的…

C++编程学习(第七天)

基于过程的程序设计C既可以用来进行基于过程的程序设计,又可以用来进行面向对象的程序设计。基于过程的程序设计又称为过程化的程序设计,它的特点是:程序必须告诉计算机应当具体怎么做,也就是要给出计算机全部操作的具体过程&…

ubuntu透网方案

场景:两个linux/Ubuntu系统,一个可以上网,一个不能,让不能上网的,让能上网的共享网络 步骤 1:修改 /etc/sysctl.conf sudo nano /etc/sysctl.conf 找到或添加以下行: net.ipv4.ip_forward1 按 CtrlO 保存&a…

基于Python的物联网岗位爬取与可视化系统的设计与实现【海量数据、全网岗位可换】

文章目录有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍数据采集数据预处理系统展示总结每文一语有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 随着物联网技术的迅速发展,物联网行业…

线性回归原理推导与应用(十):逻辑回归多分类实战

本篇文章将利用sklearn中内置的鸢尾花数据进行逻辑回归建模并对鸢尾花进行分类。对于逻辑回归和线性回归的相关原理,可以查看之前的文章 数据导入 鸢尾花数据是机器学习里的常用数据,首先导入一些基础库并从sklearn中导入数据集 #导入用到的一些pytho…

Docker 部署emberstack/sftp 镜像

Docker 部署 emberstack/sftp 镜像 1、找到国内可用的docker源,本次测试使用docker.1ms.run 2、下载emberstack/sftp镜像docker pull docker.1ms.run/emberstack/sftp3、安装并启动emberstack/sftp镜像docker run -d -p 22:22 --name SFTP -v D:\SFTP:/home/sftpuser/sftp --pr…

【华为OD】MVP争夺战2(C++、Java、Python)

文章目录题目题目描述输入描述输出描述示例思路核心思路:关键观察:算法步骤:排序策略:特殊情况处理:代码CJavaPython复杂度分析时间复杂度空间复杂度结果总结题目 题目描述 给定一个整型数组,请从该数组中…

Python打卡训练营Day58

DAY 58 经典时序预测模型2知识点回顾:时序建模的流程时序任务经典单变量数据集ARIMA(p,d,q)模型实战SARIMA摘要图的理解处理不平稳的2种差分n阶差分---处理趋势季节性差分---处理季节性建立一个ARIMA模型,通…

003大模型基础知识

大模型分类: 技术架构: Encoder Only Bert Decoder Only 著名的大模型都是 Encoder - Decoder T5 是否开源: 开源阵营: Llama DeepSeek Qwen 闭源阵营: ChatGpt Gemini Claude 语言模型发展阶段&am…

JVM监控及诊断工具-GUI篇

19.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈…

适用于Windows系统截图工具

1.Faststone Capture 官网网址:https://faststone-capture.com/ 网上很多注册码:https://www.cnblogs.com/LiuYanYGZ/p/16839503.html 2.Snipaste 官网网址:https://apps.microsoft.com/detail/9p1wxpkb68kx?launchtrue&modefull&…

区块链的三种共识机制——PoW、PoS和DPoS原理

区块链的核心是去中心化网络的信任机制,而共识机制是实现这一目标的关键。共识机制可分为两个阶段:(1)提出共识内容(2)对内容达成共识(遵循最长链原则)。三种主流的共识机制主要有工…

React 和 Vue的自定义Hooks是如何实现的,如何创建自定义钩子

目的:将公共逻辑提取出来,类似于 mixin,解决了mixin的设计缺陷。 React 和 Vue 自定义 Hooks 实现对比 React 自定义 Hooks React 的自定义 Hooks 是 JavaScript 函数,它们以 use 开头,可以调用其他 Hooks。 基本规则 …

构建高效事件驱动架构:AWS S3与SQS集成实践指南

引言 在现代云架构中,事件驱动的设计模式越来越受到开发者的青睐。AWS S3与SQS的集成为我们提供了一个强大的事件处理机制,能够在文件上传、删除或修改时自动触发后续的业务逻辑。本文将详细介绍如何配置S3事件通知到SQS队列,并分享实际项目中的最佳实践。 架构概述 S3事…

C++ -- STL-- List

////// 欢迎来到 aramae 的博客,愿 Bug 远离,好运常伴! ////// 博主的Gitee地址:阿拉美 (aramae) - Gitee.com 时代不会辜负长期主义者,愿每一个努力的人都能达到理想的彼岸。1. list的介绍及使用 2. list的深度剖…