Neo4j安装部署及python连接neo4j操作

devtools/2024/9/22 18:21:45/

pythonneo4j_0">Neo4j安装部署及python连接neo4j操作

  1. Neo4j安装和环境配置
    安装依赖库:
    sudo apt-get install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    增加Neo4 GPG key:
    curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
    添加Neo4j仓库:
    echo “deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable latest” | sudo tee -a /etc/apt/sources.list.d/neo4j.list
    更新仓库源并安装Neo4j:
    sudo apt-get update && sudo apt-get install neo4j -y
    启用Neo4j;
    sudo systemctl enable --now neo4j
    允许外部连接:
    sudo nano /etc/neo4j/neo4j.conf
    修改内容:server.default_listen_address=0.0.0.0
    重启服务:
    sudo systemctl restart neo4j
    修改系统Host文件:
    sudo nano /etc/hosts
    添加上主机的ip地址和主机名

访问主机或者服务器的7474端口,登陆neo4j
在这里插入图片描述

2.实现简单的图数据库
以Kaggle上的arXiv数据集(https://www.kaggle.com/datasets/Cornell-University/arxiv)为实验数据
下载后,文件默认为json文件(arxiv-metadata-oai-snapshot.json)
在这里插入图片描述

通过以下代码读取数据:
在这里插入图片描述

数据结构如下图所示:
在这里插入图片描述

将数据简化,留下id作为唯一索引,主要属性title、authors_parsed、categories:
在这里插入图片描述

考虑到数据庞大,测试采用在线版的Neo4j Sandbox,创建的链接可以保留3天
创建一个空白的sanbox,得到Bolt URL及其端口号:
在这里插入图片描述

利用python连接到Neo4j并将数据存储到数据库
在这里插入图片描述
数据库中创建约束,以确保节点不重复,并设置索引:
conn.query(‘CREATE CONSTRAINT papers IF NOT EXISTS FOR (p:Paper) REQUIRE p.id IS UNIQUE’)
conn.query(‘CREATE CONSTRAINT authors IF NOT EXISTS FOR (a:Author) REQUIRE a.name IS UNIQUE’)
conn.query(‘CREATE CONSTRAINT categories IF NOT EXISTS FOR (c:Category) REQUIRE c.category IS UNIQUE’)

创建三个函数,用于为类别和作者节点创建数据框架:
在这里插入图片描述

使用以下函数添加paper节点以及所有关系:
在这里插入图片描述

采用批处理将处理加载到neo4j中:
在这里插入图片描述
最后,在neo4j Sandbox中执行MATCH操作,得到graph,例如
MATCH (a:Author)-[:AUTHORED]->(p:Paper)-[:IN_CATEGORY]->(c:Category) RETURN a, p, c LIMIT 30
在这里插入图片描述
通过以下代码可以直接在python中进行和上面一样的MATCH查询,并返回结果:

python">query_string = '''
MATCH (a:Author)-[:AUTHORED]->(p:Paper)-[:IN_CATEGORY]->(c:Category) RETURN a, p, c LIMIT 30
'''
top_cat_df = pd.DataFrame([dict(_) for _ in conn.query(query_string)])
top_cat_df.head(20)

http://www.ppmy.cn/devtools/43283.html

相关文章

C语言之指针详解(4)

文章目录 一、回调函数二、qsort使用举例2.1使用qsort函数排序整型数据2.2使用qsort函数排序结构体数据 三、qsort函数的模拟实现 一、回调函数 首先我们先来了解一下什么是回调函数 回调函数通俗来讲就是一个通过函数指针调用的函数。 如果你把函数的指针(地址&am…

容器(Container)的详细介绍

容器,作为现代软件开发和部署的核心技术之一,已经成为云计算、微服务架构等领域的基石。容器技术通过提供轻量级的虚拟化环境,实现了应用程序的快速部署、迁移和扩展,极大地提高了软件开发的效率和灵活性。本文将详细介绍容器的概…

el-table-column两种方法处理特殊字段,插槽和函数

问题:后端返回的字段为数字 解决办法: {{ row[item.prop] 1 ? "启用" : "禁用" }} {{ row[item.prop] }} 最终果: 另外:如果多种状态时可用函数 {{ getStatus(row[item.prop]) }} {{ row[item.prop…

python数据分析——apply 2

参考资料:活用pandas库 1、向量化函数 使用apply时,可以按行或按列应用函数。如果想应用自定义的函数,必须重写它,因为整列或整行传递到了函数的第一个参数中。可以利用向量化函数和装饰器对所有函数进行向量化。对代码进行向量化…

2023年广东省程序设计大赛

C 双指针&#xff0c;排序 买便宜的&#xff0c;用最贵的卖出 #include<bits/stdc.h>using namespace std; #define int long long const int N 2e5 10; int n,m; int re[2]{1,4}; int bl[4]{2,3,5,6}; int f; struct node {int x,y; }a[N]; bool cmp(node W,node Q…

TCP 连接排故:使用 BPF BCC工具包进行网络跟踪

写在前面 博文内容为 BCC 进行网络跟踪常见工具介绍tcpconnect:主动的 TCP 连接跟踪tcpaccept:被动的 TCP 连接跟踪tcpretrans:重传的 TCP 连接跟踪tcptracer:已建立的 TCP 连接跟踪tcpconnlat:测量出站 TCP 连接的延迟tcpdrop:被内核丢弃的 TCP 数据包跟踪tcplife: TCP 会话追…

单片机的内存映射和重映射

内存映射 在单片机内&#xff0c;不管是RAM还是ROM还是寄存器&#xff0c;他们都是真实存在的物理存储器&#xff0c;为了方便操作&#xff0c;单片机会给每一个存储单元分配地址&#xff0c;这就叫做内存映射。 单片机的内存映射是指将外部设备或外部存储器映射到单片…

数据赋能(101)——概念:数据治理、数据管理

此文为本人学习与提高能力的笔记。 数据治理与数据管理这两个术语&#xff0c;尽管在数据管理的领域中经常相伴出现&#xff0c;且在某些情境下可能被视为具有相似的语义范畴&#xff0c;但为了确保术语使用的精准度和专业性&#xff0c;我们必须对它们有更为深入的认知。我们…