python连接neo4j构建邻接矩阵

 1. 安装py2neo

打开命令行终端cmd, 输入pip install 包名 即可安装。

pip install py2neo

2. 启动neo4j

1)cmd 以管理员身份运行,输入

neo4j.bat console

2)浏览器打开网址:(cmd不要关闭)

http://localhost:7474/browser/

3. 导入数据

neo4j(3.5.8)数据库切换、csv文件的导入和导出-CSDN博客

4. 连接Neo4j数据库

在pycharm中创建代码:

# 创建一个与运行在localhost的Neo4j数据库的连接
from py2neo import Graph

# graph = Graph(host="localhost", port=7687, user="neo4j", password="password")
graph = Graph('http://localhost:7474', auth=("neo4j", "neo4j123"))

# 查询节点的数量
query = """
MATCH (p:人物)
RETURN p, id(p) AS id
"""
result = graph.run(query).data()

# 初始化邻接矩阵和姓名属性字典
adj_matrix = []
name_dict = {}

# 填充姓名属性字典
for record in result:
    node_id = record['id']
    node_name = record['p']['姓名']
    name_dict[node_id] = node_name
    adj_matrix.append([0] * len(result))

# 创建一个字典,将节点的Neo4j ID映射到邻接矩阵索引位置
neo4j_id_map = {}
for i, record in enumerate(result):
    node_id = record['id']
    neo4j_id_map[node_id] = i

# 查询关系并填充邻接矩阵
query = """
MATCH (p1:人物)-[r]->(p2:人物)
RETURN id(p1) AS id1, id(p2) AS id2, r.权重 AS weight
"""
result = graph.run(query).data()

# 重新填充邻接矩阵
for record in result:
    id1 = record['id1']
    id2 = record['id2']
    weight = record['weight']
    adj_matrix[neo4j_id_map[id1]][neo4j_id_map[id2]] = weight
    adj_matrix[neo4j_id_map[id2]][neo4j_id_map[id1]] = weight  # 考虑反向关系,填充邻接矩阵的对称位置

# 打印带有姓名属性的邻接矩阵
print("Adjacency matrix:")
print("\t", end="")
for node_id in sorted(name_dict.keys()):
    print(name_dict[node_id], end="\t")
print()
for i, row in enumerate(adj_matrix):
    print(name_dict[sorted(name_dict.keys())[i]], end="\t")
    print("\t".join(map(str, row)))

# 关闭数据库连接
# py2neo 中没有显式关闭连接的方法,连接会在不再使用时自动关闭。

5.结果展示

人物关系的邻接矩阵如下:

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值