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方法防止重复节点和关系的创建