使用Python 访问Neo4J 数据库

前期准备工作

安装Neo4j Python库

要与Neo4j数据库交互,你需要安装Neo4j的Python客户端库。可以通过以下命令安装:

bash 复制代码
pip install neo4j

基本步骤

以下是使用Neo4j的基本步骤,每一步都包含了详细的说明:
引入库 定义连接参数 创建驱动实例 创建会话 执行Cypher查询 处理查询结果 关闭会话和驱动 其它业务操作

代码示例

2.1 执行单行查询语句

以下是一个执行单行Cypher查询语句的示例,用于查询数据库中的前五个节点。

python 复制代码
from neo4j import GraphDatabase

# 连接Neo4j数据库
uri = "bolt://192.168.0.104:7687"  # Neo4j的地址,通常为 localhost 或者实际服务器的IP
username = "neo4j"              # 用户名,默认通常是 neo4j
password = "12345678"           # 密码

# 创建驱动实例
driver = GraphDatabase.driver(uri, auth=(username, password))

# 创建一个会话
with driver.session() as session:
    # 写一个Cypher查询语句
    query = "MATCH (n) RETURN n LIMIT 5"  # 查询前五个节点

    # 执行查询
    result = session.run(query)

    # 处理结果
    for record in result:
        print(record["n"])

2.2 执行多行查询语句

Neo4j要求每个查询只有一个语句。如果想在一个会话中执行多个Cypher语句,需要将它们分开执行。以下是分开执行的示例:

python 复制代码
from neo4j import GraphDatabase

# 连接Neo4j数据库
uri = "bolt://192.168.0.104:7687"
username = "neo4j"
password = "12345678"

# 尝试连接数据库
try:
    driver = GraphDatabase.driver(uri, auth=(username, password))
    with driver.session() as session:
        # 分别执行每个Cypher查询语句
        queries = [
            "CREATE (biological:Biological {name: 'Biological'})",
            "CREATE (plant:Plant {name: 'Plant1'})",
            "CREATE (herb:Herb {name: 'Herb1'})",
            "CREATE (animal:Animal {name: 'Animal'})",
            "CREATE (dog:Animal {name: 'Dog'})",
            "CREATE (cow:Animal {name: 'Cow'})",
            "MATCH (herb:Herb), (plant:Plant) WHERE herb.name = 'Herb1' AND plant.name = 'Plant1' CREATE (herb)-[:IS_A]->(plant)",
            "MATCH (plant:Plant), (biological:Biological) WHERE plant.name = 'Plant1' AND biological.name = 'Biological' CREATE (plant)-[:IS_A]->(biological)",
            "MATCH (animal:Animal), (biological:Biological) WHERE animal.name = 'Animal' AND biological.name = 'Biological' CREATE (animal)-[:IS_A]->(biological)",
            "MATCH (dog:Animal), (animal:Animal) WHERE dog.name = 'Dog' AND animal.name = 'Animal' CREATE (dog)-[:IS_A]->(animal)",
            "MATCH (cow:Animal), (animal:Animal) WHERE cow.name = 'Cow' AND animal.name = 'Animal' CREATE (cow)-[:IS_A]->(animal)",
            "MATCH (cow:Animal {name: 'Cow'}), (herb:Herb {name: 'Herb1'}) WHERE cow.name = 'Cow' AND herb.name = 'Herb1' CREATE (cow)-[:EATS]->(herb)"
        ]

        # 执行每个查询
        for query in queries:
            session.run(query)

except Exception as e:
    print(f"An error occurred: {e}")
finally:
    # 确保驱动程序被关闭
    driver.close()

2.3 错误处理和资源管理

在上述示例中,我们使用了 try...except...finally 结构来处理可能发生的异常,并确保数据库连接在操作完成后被正确关闭。这是一种良好的编程实践,可以防止资源泄露和未处理的异常。

2.4 事务管理

在Neo4j中,每个会话都是一个事务。你可以在一个会话中执行多个Cypher语句,但是每个语句都是独立的事务。如果你需要执行一系列操作作为一个单一的事务,你可以使用事务API来显式地管理事务。

2.5 关闭数据库连接

在完成所有数据库操作后,确保关闭数据库连接是一个重要的步骤。这可以通过 finally 块中的 driver.close() 来实现,如上述示例所示。

相关推荐
2603_966437262 分钟前
格式化之后数据还能恢复吗?说清恢复条件
linux·运维·数据库
jufeng13074 分钟前
【系列:TDengine 工业物联网实战:从零搭起可运行系统 · 第 4 篇】
python·时序数据库·tdengine·asyncio
努力搬砖的咸鱼8 分钟前
意图理解:让Agent从需求描述自动生成Pytest测试策略
人工智能·python·ai·单元测试·pytest·agent
2601_9563198821 分钟前
2026年下半年,量化学习要把交易认知和技术实现接起来
人工智能·python
EW Frontier28 分钟前
【雷达信号处理】5 个阵元追平 16 个阵元:稀疏阵列 STAP 的实测报告【附python+matlab代码】
python·matlab·信号处理·雷达·mimo·稀疏阵列·stap
卷无止境1 小时前
FastAPI的测试事件在测什么?
后端·python·fastapi
selfsongs1 小时前
Python学习之——multiprocessing 多进程编程
python
卷无止境1 小时前
FastAPI CLI 你需要认识这把命令行利器
后端·python·fastapi
云泽8081 小时前
Python 开发环境搭建全指南:从 Python 安装到 PyCharm 配置详解
开发语言·python·pycharm
IT小白杨1 小时前
海外业务账号安全保障:主流浏览器产品底层机制对比
数据库·python·安全·自动化·安全架构·指纹浏览器