1.导入Python库和模块用于处理CSV文件并与Neo4j图数据库交互

import csv
import py2neo
from py2neo import Graph,Node,Relationship,NodeMatcher

(1)import csv:导入 csv`模块,用于读取和写入CSV文件

(2)import py2neo:导入py2neo库,提供与Neo4j图数据库进行交互的接口

(3)Graph:用于连接和操作Neo4j图数据库的主要类

(4)Node:代表图数据库中的节点,节点是Neo4j中存储数据的基本单元。

(5)Relationship:表示图数据库中的关系,用于连接两个节点

(6)NodeMatcher:用于在图中查找特定节点

2.连接本地Neo4j图数据库实例,创建Graph对象用于数据库操作

graph = Graph("bolt://localhost:7687", auth=("neo4j", "12345678"))

(1)bolt://: Neo4j的Bolt协议,用于高效传输数据

(2)localhost :表示数据库运行在本地(即同一台机器上)

(3)7687 是Neo4j的默认Bolt端口,通常Neo4j会在这个端口上监听Bolt连接

(4)auth 参数用于设置数据库的用户名和密码。

3.读取CSV文件并逐行输出内容

with open('D:/bert/HLM.csv','r',encoding='utf-8')as f:
    reader=csv.reader(f)
    for item in reader:
        if reader.line_num==1:
            continue
        print("当前行数",reader.line_num,"当前内容:",item)

(1)with open()语句打开指定路径的CSV文件HLM.csv

(2)文件以只读模式('r')打开,编码格式为UTF-8

(3)使用with语句可以确保在文件操作完成后,文件会自动关闭

(4)通过csv.reader()函数创建一个CSV读取器reader,用于逐行读取文件内容

(5)使用for循环遍历CSV文件中的每一行,将当前行的内容存储在变量item中

(6)reader.line_num获取当前读取行号。如果行号是1(第一行),则使用continue跳过这行。这通常用于跳过CSV文件的表头

4.读取CSV文件,包含人物之间的关系信息。每一对人物作为节点,彼此之间的关系作为边,并将这些信息存储到图数据库中

with open('D:/bert/HLM.csv','r',encoding='utf-8')as f:
    reader=csv.reader(f)
    for item in reader:
        if reader.line_num==1:
            continue
        print("当前行数",reader.line_num,"当前内容:",item)
        start_node=Node("Person",name=item[0])
        end_node=Node("Person",name=item[1])
        relation=Relationship(start_node,item[3],end_node)
        graph.merge(start_node,"Person","name")
        graph.merge(end_node,"Person","name")
        graph.merge(relation,"Person","name")

(1)for循环:使用for循环逐行读取reader中的每一行内容,将其存储在变量item中。每一行是一个列表,包含多个字段

(2)通过判断行号是否为1来跳过CSV文件的第一行(标题行),避免将标题行作为数据处理

(3)start_node和end_node分别表示每行中两个相关联的“人物”

(4)Relationship类用于创建一个关系对象,连接start_node和end_node,关系类型为item[3],当前行的第三个字段

(5)merge方法用于将节点和关系合并到图数据库。merge方法会检查图中是否已有同名的节点或关系,如果已有相同的节点或关系,则不会创建新的节点或关系,确保图中数据的唯一性

(6)使用merge方法防止重复节点和关系的创建

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐