neo4j数据库实战

neo4j数据库

neo4j数据库安装

JDK安装 :https://www.oracle.com/java/technologies/javase-downloads.html
Neo4j安装 :https://neo4j.com/download-center/

配置JDK和neo4j的环境变量

  1. 下载.exe文件然后安装
  2. 把jdk安装路径的bin文件夹写入到环境变量中
  3. 下载neo4j社区版本(免费)

    解压后把neo4j的bin文件夹也添加到环境变量中

启动neo4j

cmd命令行输入neo4j.bat console

在浏览器打开 http://localhost:7474

  1. 登录:使用默认账号和密码进行登录。默认账号为 neo4j,密码也为 neo4j。
    Protocol要设置为http://
  2. 登录成功

neo4j增删改查

增:
  1. 增加一个节点
python 复制代码
CREATE(n:Person{name:'我',age:31})
  1. 带有关系属性
bash 复制代码
CREATE (p:Person{name:"小弟",age:"31"})-[:钓鱼{金额:1000}]->(n:Person{name:"大哥",age:"35"})
删
bash 复制代码
CREATE (n:Person{name:'zzz',age:11})
 MATCH (n:Person{name:'zzz'}) DELETE n
  1. 删除关系
bash 复制代码
 MATCH (p:Person{name:"小弟",age:"31"})-[f:钓鱼]->(n:Person{name:"大哥",age:"35"}) DELETE f 
改
  1. 加上标签
bash 复制代码
MATCH (t:Person) WHERE elementId(t)="4:74f28f45-2057-47f2-9118-a8e75e15275c:173" SET t:好人 RETURN t
  1. 加上属性
bash 复制代码
MATCH (a:好人) WHERE elementId(a)='4:74f28f45-2057-47f2-9118-a8e75e15275c:173' SET a.战斗力=200 RETURN a
  1. 修改属性
bash 复制代码
MATCH (a:好人) WHERE elementId(a)='4:74f28f45-2057-47f2-9118-a8e75e15275c:173' SET a.战斗力=500 RETURN a
查
bash 复制代码
MATCH (p:Person)-[:钓鱼]->(n:Person) RETURN p,n
快速清空数据库
bash 复制代码
MATCH (n) DETACH DELETE n

使用python操作neo4j实例

1. 环境准备

首先,确保你已经安装了Neo4j数据库并启动了它。如果你还没有安装,可以参考Neo4j官网上的安装指南。

在Python中,我们可以使用neo4j官方提供的neo4j Python驱动来与Neo4j数据库进行交互。可以使用以下命令来安装这个库:

bash 复制代码
pip install neo4j

2. 启动Neo4j实例

确保Neo4j数据库已经启动,并能够通过浏览器访问。默认情况下,Neo4j使用以下配置:

端口:7687

用户名:neo4j

密码:neo4j(初次启动时,你需要设置密码)

你可以通过访问 http://localhost:7474 在浏览器中打开Neo4j的Web界面。

3. 连接Neo4j数据库

在Python中,我们使用neo4j库中的GraphDatabase类来连接Neo4j数据库。以下是连接Neo4j实例的基本代码:

bash 复制代码
from neo4j import GraphDatabase

# 连接到Neo4j数据库
uri = "bolt://localhost:7687"  # Neo4j实例地址
username = "neo4j"  # 用户名
password = "your_password"  # 密码

# 创建数据库连接
driver = GraphDatabase.driver(uri, auth=(username, password))

# 获取一个会话
session = driver.session()

4. 创建节点和关系

在Neo4j中,数据是通过节点(Node)和关系(Relationship)来存储的。我们可以使用Cypher查询语言来创建节点和关系。

以下是一个创建节点和关系的示例:

bash 复制代码
# 创建节点
session.run("CREATE (a:Person {name: 'Alice', age: 29})")
session.run("CREATE (b:Person {name: 'Bob', age: 34})")

# 创建关系
session.run("""
    MATCH (a:Person), (b:Person)
    WHERE a.name = 'Alice' AND b.name = 'Bob'
    CREATE (a)-[:KNOWS]->(b)
""")

5. 查询数据

你可以使用Cypher查询语言来查询节点和关系。以下是一个查询所有Person节点及其关系的示例:

bash 复制代码
# 查询所有的Person节点
result = session.run("MATCH (p:Person) RETURN p.name AS name, p.age AS age")

# 打印查询结果
for record in result:
    print(f"Name: {record['name']}, Age: {record['age']}")

6. 更新数据

如果你需要更新一个节点或关系,可以使用SET语句。例如,我们可以更新Alice的年龄:

bash 复制代码
# 更新节点属性
session.run("MATCH (a:Person {name: 'Alice'}) SET a.age = 30")

7. 删除数据

如果你需要删除节点或关系,可以使用DELETE语句。以下是删除节点的示例:

bash 复制代码
# 删除节点和关系
session.run("""
    MATCH (a:Person {name: 'Alice'})-[r]->(b)
    DELETE r, a
""")

8. 完整示例

以下是一个完整的示例,展示了如何创建节点、查询节点、更新节点和删除节点。

bash 复制代码
from neo4j import GraphDatabase
# 连接Neo4j数据库
uri = "bolt://localhost:7687"
username = "neo4j"
password = "your_password"
driver = GraphDatabase.driver(uri, auth=(username, password))

def create_data(session):
    # 创建节点
    session.run("CREATE (a:Person {name: 'Alice', age: 29})")
    session.run("CREATE (b:Person {name: 'Bob', age: 34})")

    # 创建关系
    session.run("""
        MATCH (a:Person), (b:Person)
        WHERE a.name = 'Alice' AND b.name = 'Bob'
        CREATE (a)-[:KNOWS]->(b)
    """)

def query_data(session):
    # 查询所有的Person节点
    result = session.run("MATCH (p:Person) RETURN p.name AS name, p.age AS age")
    for record in result:
        print(f"Name: {record['name']}, Age: {record['age']}")

def update_data(session):
    # 更新Alice的年龄
    session.run("MATCH (a:Person {name: 'Alice'}) SET a.age = 30")

def delete_data(session):
    # 删除Alice节点
    session.run("""
        MATCH (a:Person {name: 'Alice'})-[r]->(b)
        DELETE r, a
    """)

# 获取一个会话
session = driver.session()

# 创建数据
create_data(session)

# 查询数据
print("Before update:")
query_data(session)

# 更新数据
update_data(session)

# 查询更新后的数据
print("\nAfter update:")
query_data(session)

# 删除数据
delete_data(session)

# 查询删除后的数据
print("\nAfter deletion:")
query_data(session)

# 关闭会话
session.close()

# 关闭数据库连接
driver.close()

9. 小结

在本文中,我们介绍了如何使用Python操作Neo4j,包括如何连接数据库、创建节点和关系、查询、更新和删除数据。通过这些操作,你可以在Python中方便地与Neo4j数据库进行交互,进行图数据存储与查询。

相关推荐
测试界的小码农1 小时前
【图数据库实战进阶(01):从零认识 Neo4j,搭建第一个图数据库项目】
数据库·neo4j
x_SpiderMan1 小时前
搭建Oracle RAC 集群
数据库·oracle
测试界的小码农1 小时前
【图数据库实战进阶(03):Neo4j 图数据建模实战——节点、关系与属性应该怎么设计?】
数据库·oracle·neo4j
瑞克-桑切斯1 小时前
redis
数据库·redis·缓存
freejackman2 小时前
【工程化】从“单兵作战”到“多引擎架构”:基于门面模式的重构实战
大数据·数据库·hive·sql·测试工具·设计模式·架构
bksczm3 小时前
InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer
数据库·mysql
花间相见3 小时前
【计算基础|Redis02】【上手】五大数据类型命令逐条实操
数据库·redis·后端
敲上瘾4 小时前
Qt Widgets入门:项目模板解析与Hello World
开发语言·数据库·c++·qt·ui·qt6.3
bksczm5 小时前
Redis 持久化:RDB 快照与 AOF 日志
数据库·redis·mybatis
.痞老板.5 小时前
mysql初阶--数据库设计
数据库·mysql·oracle