neo4j数据库
neo4j数据库安装
JDK安装:https://www.oracle.com/java/technologies/javase-downloads.html
Neo4j安装:https://neo4j.com/download-center/
配置JDK和neo4j的环境变量
- 下载.exe文件然后安装
- 把jdk安装路径的bin文件夹写入到环境变量中
- 下载neo4j社区版本(免费)
解压后把neo4j的bin文件夹也添加到环境变量中
启动neo4j
cmd命令行输入neo4j.bat console
在浏览器打开 http://localhost:7474
- 登录:使用默认账号和密码进行登录。默认账号为 neo4j,密码也为 neo4j。
Protocol要设置为http://
- 登录成功
neo4j增删改查
增:
- 增加一个节点
CREATE(n:Person{name:'我',age:31})
- 带有关系属性
CREATE (p:Person{name:"小弟",age:"31"})-[:钓鱼{金额:1000}]->(n:Person{name:"大哥",age:"35"})
删
CREATE (n:Person{name:'zzz',age:11})
MATCH (n:Person{name:'zzz'}) DELETE n
- 删除关系
MATCH (p:Person{name:"小弟",age:"31"})-[f:钓鱼]->(n:Person{name:"大哥",age:"35"}) DELETE f
改
- 加上标签
MATCH (t:Person) WHERE elementId(t)="4:74f28f45-2057-47f2-9118-a8e75e15275c:173" SET t:好人 RETURN t
- 加上属性
MATCH (a:好人) WHERE elementId(a)='4:74f28f45-2057-47f2-9118-a8e75e15275c:173' SET a.战斗力=200 RETURN a
- 修改属性
MATCH (a:好人) WHERE elementId(a)='4:74f28f45-2057-47f2-9118-a8e75e15275c:173' SET a.战斗力=500 RETURN a
查
MATCH (p:Person)-[:钓鱼]->(n:Person) RETURN p,n
快速清空数据库
MATCH (n) DETACH DELETE n
使用python操作neo4j实例
1. 环境准备
首先,确保你已经安装了Neo4j数据库并启动了它。如果你还没有安装,可以参考Neo4j官网上的安装指南。
在Python中,我们可以使用neo4j官方提供的neo4j Python驱动来与Neo4j数据库进行交互。可以使用以下命令来安装这个库:
pip install neo4j
2. 启动Neo4j实例
确保Neo4j数据库已经启动,并能够通过浏览器访问。默认情况下,Neo4j使用以下配置:
端口:7687
用户名:neo4j
密码:neo4j(初次启动时,你需要设置密码)
你可以通过访问 http://localhost:7474 在浏览器中打开Neo4j的Web界面。
3. 连接Neo4j数据库
在Python中,我们使用neo4j库中的GraphDatabase类来连接Neo4j数据库。以下是连接Neo4j实例的基本代码:
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查询语言来创建节点和关系。
以下是一个创建节点和关系的示例:
# 创建节点
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节点及其关系的示例:
# 查询所有的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的年龄:
# 更新节点属性
session.run("MATCH (a:Person {name: 'Alice'}) SET a.age = 30")
7. 删除数据
如果你需要删除节点或关系,可以使用DELETE语句。以下是删除节点的示例:
# 删除节点和关系
session.run("""
MATCH (a:Person {name: 'Alice'})-[r]->(b)
DELETE r, a
""")
8. 完整示例
以下是一个完整的示例,展示了如何创建节点、查询节点、更新节点和删除节点。
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数据库进行交互,进行图数据存储与查询。