python上测试neo4j库

安装完了neo4j库后,如何使用。用python来小试牛刀

1.从其他博客上找来demo

python 复制代码
#coding:utf-8
from py2neo import Graph,Node,Relationship
 
##连接neo4j数据库,输入地址、用户名、密码
graph = Graph('bolt://xx.xx.xx.xx:7687',user='neo4j',password='neo4j1234')
 
##创建结点
test_node_1 = Node('ru_yi_zhuan',name='皇帝')
test_node_2 = Node('ru_yi_zhuan',name='皇后')
test_node_3 = Node('ru_yi_zhuan',name='公主')
graph.create(test_node_1)
graph.create(test_node_2)
graph.create(test_node_3)
 
##创建关系
#分别建立了test_node_1指向test_node_2和test_node_2指向test_node_1两条关系,关系的类型为"丈夫、妻子",两条关系都有属性count,且值为1。
node_1_zhangfu_node_1 = Relationship(test_node_1,'丈夫',test_node_2)
node_1_zhangfu_node_1['count'] = 1
node_2_qizi_node_1 = Relationship(test_node_2,'妻子',test_node_1)
node_2_munv_node_1 = Relationship(test_node_2,'母女',test_node_3)
 
node_2_qizi_node_1['count'] = 1
 
graph.create(node_1_zhangfu_node_1)
graph.create(node_2_qizi_node_1)
graph.create(node_2_munv_node_1)
 
print(graph)
print(node_1_zhangfu_node_1)
print(node_2_qizi_node_1)
print(node_2_munv_node_1)

python运行

vscode中如何配置python环境,还是搜其他博客吧。

每执行一次python,就会在neo4j库中新增一条数据。

要想在库中显示出拓扑关系,服务是要启动起来的。

查看库中记录

5条数据,10个节点。

遇到的问题:

1.版本问题

the following setting are not supported :%r % other. setting are not support {'username':'noe4j'}

解决方案:

我的版本中,在环境上升级了neo4j,同时将username改为了user。启动成功。

bash 复制代码
遇到这个错误 the following setting are not supported : %r % other. setting are not support {'username':'noe4j'} 时,通常是因为你正在使用 py2neo 并尝试通过不正确的格式传递配置选项。这个问题可能涉及到 Neo4j 的身份验证设置,或者是库的版本不匹配。

py2neo 在不同版本之间可能会有不同的配置方法,特别是与连接字符串、身份验证和设置相关的部分。

常见解决方案
1. 确保正确传递身份验证信息
在较新版本的 py2neo 中,连接字符串和认证信息的传递方式可能发生了变化。以下是一些常见的设置方法:

旧版 py2neo 设置方式:
python
from py2neo import Graph

# 如果使用的是较老的 py2neo 版本,通常会用类似这样的方式
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))
新版 py2neo 设置方式:
如果你使用的是 py2neo 的较新版本,可以按以下方式进行连接:

python
from py2neo import Graph

# 在新版本的 py2neo 中,连接信息可能需要如下传递
graph = Graph("bolt://localhost:7687", user="neo4j", password="password")
注意:

确保 "neo4j" 和 "password" 替换为你自己的 Neo4j 数据库的用户名和密码。
bolt 协议是 Neo4j 的默认协议,确保你的 Neo4j 数据库正在使用 bolt。
2. 升级 py2neo
如果你使用的是较老版本的 py2neo,它可能不完全支持新的身份验证和连接方式。可以尝试升级到最新版本:

bash
pip install --upgrade py2neo
3. 检查 Neo4j 配置
如果你使用的是 Neo4j 版本 4.x 及更高版本,它引入了新的身份验证机制,要求你在连接时明确提供用户名和密码。

新版 Neo4j 的配置示例:
python
from py2neo import Graph

# 连接 Neo4j 4.x 或更高版本的数据库
graph = Graph("bolt://localhost:7687", auth=("neo4j", "your_password"))
确保 your_password 被替换为正确的密码。

4. 完整示例
确保使用的代码像下面这样:

python
from py2neo import Graph

# 连接到本地的 Neo4j 实例(Neo4j 4.x及更高版本)
graph = Graph("bolt://localhost:7687", user="neo4j", password="your_password")

# 运行查询示例
data = graph.run("MATCH (n) RETURN n LIMIT 5")
for record in data:
    print(record)
5. 检查 Neo4j 服务器状态
如果你已经确认代码无误,且依然无法连接,检查你的 Neo4j 服务器是否已启动,并且监听在正确的端口(默认为 7687)。如果没有启动,可以使用以下命令启动 Neo4j:

在本地:通过 Neo4j Desktop 或命令行启动。
Docker:如果你使用的是 Docker,确保容器正在运行。
总结
确保你正确传递 user 和 password 信息。
使用最新版本的 py2neo。
使用正确的协议和端口(bolt://localhost:7687)。
确保 Neo4j 数据库正常运行。

2.语法问题

创建节点时的问题

##创建结点

bash 复制代码
test_node_1 = Node(label='ru_yi_zhuan',name='皇帝')
test_node_2 = Node(label='ru_yi_zhuan',name='皇后')
test_node_3 = Node(label='ru_yi_zhuan',name='公主')

解决方案

bash 复制代码
Node 标签的用法:在 py2neo 中,Node 对象的标签应该传递一个标签列表,而不是传递 label='xxx'。如果你想设置一个标签,应该传递一个包含标签名称的列表。正确的语法应该是 Node("ru_yi_zhuan", name="皇帝"),其中 "ru_yi_zhuan" 就是标签。

参数命名:Node 对象的标签参数是通过位置传递的,不需要用 label='...' 的方式来定义,而是直接通过第一个参数传递标签(或者多个标签)。其他属性应该通过关键字参数传递。

修改后的代码如下:

python
from py2neo import Graph, Node, Relationship

# 连接 Neo4j 数据库,输入地址、用户名、密码
graph = Graph('bolt://10.15.32.71:7687', user='neo4j', password='neo4j1234')

# 创建节点
test_node_1 = Node('ru_yi_zhuan', name='皇帝')
test_node_2 = Node('ru_yi_zhuan', name='皇后')
test_node_3 = Node('ru_yi_zhuan', name='公主')

# 可以选择将节点添加到图中
graph.create(test_node_1)
graph.create(test_node_2)
graph.create(test_node_3)
解释:
Node('ru_yi_zhuan', name='皇帝'): 'ru_yi_zhuan' 是节点的标签,name='皇帝' 是节点的属性。
graph.create(test_node_1):将节点添加到数据库中。你可以创建关系来连接这些节点,或者仅仅保存节点本身。
小建议:
标签:如果你打算给多个节点使用相同的标签 'ru_yi_zhuan',这完全没问题,表示这些节点属于同一类别。
关系:如果你需要创建节点间的关系,可以使用 Relationship 类来建立。
例如,创建一对父子关系:

python
# 创建关系
relationship = Relationship(test_node_1, '父亲', test_node_3)

# 保存关系
graph.create(relationship)
这样可以根据需求进一步建立节点之间的连接。
相关推荐
铉铉这波能秀2 小时前
LeetCode Hot100 中 enumerate 函数的妙用(2026.2月版)
数据结构·python·算法·leetcode·职场和发展·开发
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于python的电影推荐系统为例,包含答辩的问题和答案
开发语言·python
敲键盘的生活2 小时前
MoneyPrinter重构之一:用nicegui调用大模型生成视频文案
python·重构·aigc·ai编程·ai写作
穿过锁扣的风2 小时前
一文搞懂 SQL 五大分类:DQL/DML/DDL/DCL/TCL
数据库·microsoft·oracle
小邓睡不饱耶2 小时前
2026 CSDN榜单封神!3大热门技术+5个大厂案例,新手也能直接抄作业
python·ai
l1t2 小时前
DeepSeek总结的SNKV — 无查询处理器的 SQLite 键值存储
数据库·sqlite·kvstore
洛豳枭薰2 小时前
MySQL 梳理
数据库·mysql
南极星10052 小时前
我的创作纪念日--128天
java·python·opencv·职场和发展
码界筑梦坊2 小时前
327-基于Django的兰州空气质量大数据可视化分析系统
python·信息可视化·数据分析·django·毕业设计·数据可视化
Highcharts.js2 小时前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器