建议参考我的另外一篇文章,更详细全面Neo4J Cypher neo4j-driver py2neo介绍与使用
Neo4j 是基于 Java 的图形数据库,运行 Neo4j 需要启动 JVM 进程,因此必须安装 Java SE 的 JDK。
Neo4j 应用程序有如下主要的目录结构:
bin 目录:用于存储 Neo4j 的可执行程序;
conf 目录:用于控制 Neo4j 启动的配置文件;
data 目录:用于存储核心数据库文件;
plugins 目录:用于存储 Neo4j 的插件。
接下来主要介绍在ubuntu下neo4j环境配置。
查看当前服务器是否有java环境
java -version
如果没有的话, 参考链接
curl -O http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gz
tar -axvf neo4j-community-3.4.5-unix.tar.gz
cd neo4j-community-3.4.5-unix
vim conf/neo4j.conf
以下引用自 https://blog.csdn.net/u013946356/article/details/81736232
修改了其中dbms.shell.host行号,亲测以下所有行号都是正确的。可以直接esc
退出编辑模式,:linenumber
直接定位到需要修改的行。
# 修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件
#dbms.directories.import=import
# 修改35行和36行,设置JVM初始堆内存和JVM最大堆内存
# 生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存
dbms.memory.heap.initial_size=5g
dbms.memory.heap.max_size=10g
# 修改46行,可以认为这个是缓存,如果机器配置高,这个越大越好
dbms.memory.pagecache.size=10g
# 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库
dbms.connectors.default_listen_address=0.0.0.0
# 默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以
# 修改71行,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.bolt.listen_address=:7687
# 修改75行,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.http.listen_address=:7474
# 修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.https.listen_address=:7473
# 修改227行,去掉#,允许从远程url来load csv
dbms.security.allow_csv_import_from_file_urls=true
# 修改246行,允许使用neo4j-shell,类似于mysql 命令行之类的
dbms.shell.enabled=true
# 修改248行,去掉#,设置连接neo4j-shell的端口,一般都是localhost或者127.0.0.1,这样安全,其他地址的话,一般使用https就行
dbms.shell.host=127.0.0.1
# 修改250行,去掉#,设置neo4j-shell端口,端口可以自定义,只要不和其他端口冲突就行
dbms.shell.port=1337
# 修改254行,设置neo4j可读可写
dbms.read_only=false
bin/neo4j start
bin/neo4j console
bin/neo4j stop
用户名neo4j
默认密码neo4j
进入cypher-shell命令行
bin/cypher-shell
修改默认密码
CALL dbms changePassword('newneo4j');
推出cypher-shell命令行
:exit;
pip install neo4j neo4j-driver==1.7.6
这里必须指定neo4j-driver
的版本,
参考链接:from error neo4j.exceptions.ServiceUnavailable: The Neo4J server does not support
communication with this driver. This driver have support for Bolt
Protocols dict_keys([Version(3, 0), Version(4, 0)])
否则就会报错如下:
raise ServiceUnavailable(str(error)) from error
neo4j.exceptions.ServiceUnavailable:
The Neo4J server does not support communication with this driver.
This driver have support for Bolt Protocols dict_keys([Version(3, 0), Version(4, 0), Version(4, 1)])
# step 1:导入 Neo4j 驱动包
from neo4j import GraphDatabase
# step 2:连接 Neo4j 图数据库
driver = GraphDatabase.driver("bolt://127.0.0.1:7687", auth=("neo4j", "newneo4j"))
# driver = GraphDatabase.driver("http://127.0.0.1:7474", auth=("neo4j", "neo4j"))
# 添加 关系 函数
def add_friend(tx, name, friend_name):
tx.run("MERGE (a:Person {name: $name}) "
"MERGE (a)-[:KNOWS]->(friend:Person {name: $friend_name})",
name=name, friend_name=friend_name)
# 定义 关系函数
def print_friends(tx, name):
for record in tx.run("MATCH (a:Person)-[:KNOWS]->(friend) WHERE a.name = $name "
"RETURN friend.name ORDER BY friend.name", name=name):
print(record["friend.name"])
# step 3:运行
with driver.session() as session:
session.write_transaction(add_friend, "Arthur", "Guinevere")
session.write_transaction(add_friend, "Arthur", "Lancelot")
session.write_transaction(add_friend, "Arthur", "Merlin")
session.read_transaction(print_friends, "Arthur")
输出
Guinevere
Lancelot
Merlin