docker安装neo4j及py2neo的使用

一、安装

#拉取容器,不要拉最新版的,最新版的有bug
docker pull neo4j:3.4

#拉取可能会很慢或中断,可以使用阿里云加速地址
vim /etc/docker/daemon.json

#your_id你自己的阿里云ID号
--registry-mirror=https://{your_id}.mirror.aliyuncs.com
#启动容器
docker run -it -d -p 7474:7474 -p 7687:7687 neo4j:3.4
docker run \
    --publish=7474:7474 --publish=7687:7687 \
    --volume=/Users/ffm1110/neo4j/data:/data \
    --volume=/Users/ffm1110/neo4j/logs:/logs \
    --volume=/Users/ffm1110/neo4j/conf:/var/lib/neo4j/conf\
    --volume=/Users/ffm1110/neo4j/import:/var/lib/neo4j/import \
    --env=NEO4J_dbms_memory_pagecache_size=2G \
    --env=NEO4J_dbms_memory_heap_max__size=8G \
    --name=neo4j \
    -d neo4j:3.4

二、修改密码


方法一
进入ip:7474,初始账号密码neo4j,登入后修改密码
方法二
#container容器id
docker exec --interactive --tty <container> bin/cypher-shell

 

三、访问

#http://服务器的ip:7474

 

四、py2neo

import pandas as pd
from py2neo import Graph, Node, Relationship, NodeMatcher


#连接neo4j数据库,输入地址、用户名、密码
graph = Graph('http://*.*.*.*:7474', username='neo4j', password='neo4j')

df=pd.read_excel(r"company.xlsx")

#创建公司名节点
for i in range(df.shape[0]): company=df.iloc[i, :][0] node = Node("COMPANY", company=company, ) graph.create(node)
#创建公司信息节点
for i in range(df.shape[0]): columns = df.columns.to_list() for j in columns[1:]: _node = df.iloc[i, :][j] node = Node("INFO", _node=_node,column=j) graph.create(node)
#建立公司信息关系
for i in range(df.shape[0]): company = df.iloc[i, :][0] matcher = NodeMatcher(graph) company_node = matcher.match("COMPANY", company=company).first() columns=df.columns.to_list() for j in columns[1:]: _node=df.iloc[i, :][j] _node=matcher.match("INFO", _node=_node,column=j).first() # print(_node,j,company_node) relationship = Relationship(_node, j, company_node) graph.create(relationship)

数据从天眼查爬取的

数据文件:https://pan.baidu.com/s/1g_UYUVpG9KV9T1eA6PReZQ    密码:e662

五、cypher常用查询

查询所有数据
match (n) return n

查询所有数据,并限制查询数据量
match (n) return n limit 10

查询某个标签的所有节点
match (c:COMPANY) return c limit 10

查询某个标签的所有节点的指定属性
match (i:INFO) return i.column limit 100

查询某个标签的所有节点的指定属性
match (i:INFO) return i.column='公司类型' limit 100

match (i:INFO { column:'公司类型' } ) return i

查询注册资金都是60万相关的公司名
match (i:INFO{_node:'60万人民币'})--(COMPANY) return i,COMPANY

查询整个图中所存在的关系
match (i:INFO)-[r]-(company:COMPANY) return type(r)

查询整个图中所存在的关系并去除结果中的重复元素
match (i:INFO)-[r]-(company:COMPANY) return distinct type(r)

查询2家公司相同的信息
match (c1:COMPANY{company:"上海贯德国际贸易有限公司"}),(c2:COMPANY{company:"甘肃谷森新能源科技有限公司"}),r=((c1)-[*..3]-(c2)) return r

 

posted @ 2020-03-31 12:47  Maple_feng  阅读(1117)  评论(0编辑  收藏  举报