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)
这样可以根据需求进一步建立节点之间的连接。
相关推荐
2601_96229988几秒前
Linux下运行Python脚本
linux·python·ubuntu·脚本·命令
IT毕设实战小研1 分钟前
基于大数据的DAX40成分股金融新闻情感趋势可视化分析
android·大数据·python·考研·金融·课程设计
qq_246839752 分钟前
postgresql xxhash64 哈希函数实现
数据库·postgresql·哈希算法
希望奇迹很安静3 分钟前
等级保护测评
网络·数据库
三十岁老牛再出发7 分钟前
8月27日总结
python·pandas
砚底藏山河7 分钟前
【量化纯GET实战 #21】用 pandas 做分析:把接口数据变成 DataFrame
java·python·金融·maven·pandas
会博通·代码搬运工14 分钟前
疾控档案落地难点:异构业务系统并存,高价值纸质凭证如何回流业务闭环
数据库·档案管理·档案管理系统·智能扫描设备·会博通
数智启示录16 分钟前
Apache Kafka Consumer 扩到 40 个仍不提速:Partition 上限锁死有效并行度 【Kafka合集】
数据库·经验分享·分布式·缓存·面试·kafka·apache
Carl_奕然22 分钟前
【智能体】Agent的四种设计模式之:React(2026最新版)
javascript·人工智能·python·react.js·设计模式·语言模型
数智启示录23 分钟前
Apache Kafka 幂等 Producer 的边界:Exactly-Once 到了 MySQL 为什么失效 【Kafka合集】
数据库·经验分享·分布式·mysql·面试·kafka·apache