1.准备内容
python版本:3.9
neo4j版本:4.2.11
py2neo库版本:4.3.0
安装代码:
pip install py2neo==4.3.0 -i https://pypi.douban.com/simple
pandas库
注意:如果版本有问题,程序可能会报错
2.代码编写
- 引库
from py2neo import *
import pandas as pd
- 连接neo4j数据库
graph = Graph('http://127.0.0.1:7474',username="用户名",password="密码")
或者这样写
graph = Graph("http://127.0.0.1:7474",auth=("账号","密码"))
- 定义函数
数据集连接:https://pan.baidu.com/s/1lGC1vSt2q9fUfKHfkD2wwg
提取码:xtxy
数据集内的内容
def yogadata():
frame = pd.read_csv(r"文件存放文件夹的路径/文件名.csv",encoding='gbk') #读取文件
for i in frame.index:
yoga_name = frame["招式"].values[i]
yoga_ms = frame["描述"].values[i]
yoga_yc = frame["益处"].values[i]
yoga_zysx = frame["注意事项"].values[i]
yoga_cjwt = frame["常见问题"].values[i]
yoga_name = str(yoga_name) #将数据转化为str类型
yoga_ms = str(yoga_ms)
yoga_yc = str(yoga_yc)
yoga_zysx = str(yoga_zysx)
yoga_cjwt = str(yoga_cjwt)
#节点创建
yoga_node = Node('招式',name=yoga_name)
graph.merge(yoga_node,'招式','name') #merge方法将重复的元素去掉
ms_node = Node('描述',name=yoga_ms)
yc_node = Node('益处',name=yoga_yc)
zysx_node = Node('注意事项', name=yoga_zysx)
cjwt_node = Node('常见问题', name=yoga_cjwt)
#创建节点间的关系
yoga_2 = Relationship(yoga_node, '描述', ms_node)
yoga_3 = Relationship(yoga_node, '益处', yc_node)
yoga_4 = Relationship(yoga_node, '注意事项', zysx_node)
yoga_5 = Relationship(yoga_node, '常见问题', cjwt_node)
#开始创建操作
try:
graph.create(yoga_2)
except:
continue
try:
graph.create(yoga_3)
except:
continue
try:
graph.create(yoga_4)
except:
continue
try:
graph.create(yoga_5)
except:
continue
3.遇到的问题
- 出现 OverflowError: mktime argument out of range问题(降低版本前)
“Clock.local_offset = Clock(-int(mktime(gmtime(0))))”在windows系统存在内存溢出
打开项目文件夹,打开 lib\site-packages\interchange\time.py
修改1427行的代码
Clock.local_offset = Clock(-int(mktime(gmtime(0))))
为
即可解决问题
注意:降低版本后我试了一下把这里的代码改回去,发现也可以跑,不知道是版本原因还是上面说的系统溢出的原因
-出现 ValueError: Primary label and primary key are required for MERGE operation问题
当前版本的py2neo的merge函数需要提供三个参数,之前报错的代码为
graph.merge(yoga_node)