neo4j图数据库,如何利用py2neo读取图数据?数据格式转化
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
经过一系列 neo4j 图形数据库的文章,苏南大叔也捡起这一系列文章的初衷。那就是使用 python 脚本查询 neo4j 内的数据,经过一系列的资料查询,可以知道:目前有两个类库,可以实现这一需求,一个是py2neo
,另外一个是neo4j-driver
(在node
和python
下面都存在)。本文中选用了neo4j
来实现需求,因为需求本身不难,所以代码上也比较简单。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文记录使用py2neo
从neo4j
数据库中执行语句并查询出数据,再对数据进行转换的经验。本文测试环境:win10
,neo4j@4.4.5
,python@3.6.8
,py2neo@2021.2.3
。
执行 cypher 语句
可以执行普通的增删改查语句,也可以返回数据。具体的增删改查语句,可以参考:
- https://newsn.net/say/cypher-create.html
- https://newsn.net/say/cypher-match-node.html
- https://newsn.net/say/cypher-match-relationship.html
- https://newsn.net/say/cypher-schema.html
- https://newsn.net/say/cypher-update.html
- https://newsn.net/say/cypher-delete.html
- https://newsn.net/say/cypher-merge.html
在这些文章里面,选出一个适合的语句即可。这里假设选择的是最常见的一个语句:
match (n) return n
那么通过py2neo
执行这条语句并获得返回值的方式如下:
from py2neo import Graph, Node, Relationship,NodeMatcher
graph = Graph('http://localhost:7474',auth=("neo4j","neo4j"))
data = graph.run("match (n)-[r]-(m) return n,r,m").data()
注意修改:地址,用户名,密码。
转化为 dataframe
from pandas import DataFrame
df = DataFrame(data)
py2neo
的查询结果,转换为 pandas 的 dataframe 后,就可以有很多的操作方案了。可以参考下面的文章:
- https://newsn.net/say/pandas-series-map.html
- https://newsn.net/say/pandas-dataframe.html
- https://newsn.net/say/pandas-dataframe-drop.html
- https://newsn.net/say/pandas-dataframe-copy.html
- https://newsn.net/say/pandas-dataframe-to_csv.html
在py2neo
的官方文档里面,提到了一个函数叫to_pandas_series
。而在实际的发行代码中,这个函数并不存在,不知道这个是啥情况。
转化为 json
import json
result = df.to_json(orient="split") # string
parsed = json.loads(result)
print(parsed["data"]) # dict
参考文献
- https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_json.html
- https://py2neo.org/
综述
看py2neo
文档的话,会发现它的功能非常强大。看官方的文档,苏南大叔的错觉是:py2neo
单独实现了一个代码版本的neo4j
。这么强大的功能,苏南大叔暂时用不到啊,一个graph.run().data()
似乎已经足够了。所以,关于py2neo
的相关经验,以后遇到哪个再说哪个吧。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。