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)
这样可以根据需求进一步建立节点之间的连接。
相关推荐
我是李武涯9 分钟前
PyTorch Dataloader工作原理 之 default collate_fn操作
pytorch·python·深度学习
大气层煮月亮17 分钟前
Oracle EBS ERP开发——报表生成Excel标准模板设计
数据库·oracle·excel
云和数据.ChenGuang26 分钟前
达梦数据库的命名空间
数据库·oracle
Kratzdisteln1 小时前
【Python】绘制椭圆眼睛跟随鼠标交互算法配图详解
python·数学·numpy·pillow·matplotlib·仿射变换
maxruan1 小时前
PyTorch学习
人工智能·pytorch·python·学习
三三木木七1 小时前
mysql拒绝连接
数据库·mysql
蹦跶的小羊羔1 小时前
sql数据库语法
数据库·sql
唐古乌梁海1 小时前
【mysql】InnoDB的聚簇索引和非聚簇索引工作原理
数据库·mysql
我变秃了也没变强1 小时前
pgsql配置密码复杂度策略
数据库·postgresql
PawSQL1 小时前
企业级SQL审核工具PawSQL介绍(1) - 六大核心能力
数据库·sql·oracle