python连接neo4j的方式汇总
- 1.官方驱动(neo4j)
-
- [2. 全功能ORM(py2neo)](#2. 全功能ORM(py2neo))
-
- [3. 领域驱动设计框架(neomodel-odm)](#3. 领域驱动设计框架(neomodel-odm))
-
- [4. 异步高性能驱动(asyncneo4j)](#4. 异步高性能驱动(asyncneo4j))
-
1.官方驱动(neo4j)
特点
- 官方维护,支持Neo4j 5.x所有新特性(如分片集群、时序图)
- 提供同步/异步API,兼容asyncio和Reactive Streams
- 与APOC插件深度集成,支持存储过程调用
代码示例
from neo4j import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))
with driver.session() as session:
result = session.run("MATCH (n:User) RETURN n.name LIMIT 10")
print([record["n.name"] for record in result])
# 关闭驱动
driver.close()
2. 全功能ORM(py2neo)
特点
- 支持节点/关系对象化操作,内置子图事务管理
- 集成GIS空间数据处理(WKT格式与Neo4j Spatial插件兼容)
- 提供GraphQL转换工具,一键生成API端点
代码示例
from py2neo import Graph, Node
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))
user = Node("User", name="Alice", age=30)
graph.create(user) # 自动提交事务
3. 领域驱动设计框架(neomodel-odm)
特点
- 类Django的声明式模型定义,支持DDD模式(聚合根、值对象)
- 自动生成数据库迁移脚本,兼容CI/CD流水线
- 内置事件溯源(Event Sourcing)和CQRS模式支持
代码示例
from neomodel_odm import StructuredNode, StringProperty
class Product(StructuredNode):
sku = StringProperty(unique_index=True)
name = StringProperty(required=True)
# 自动创建唯一约束并持久化
Product(sku="P-2025", name="Quantum Laptop").save()
4. 异步高性能驱动(asyncneo4j)
特点
- 专为微服务设计,支持万级并发连接
- 内置连接池自动扩缩容与故障转移机制
- 优化Bolt协议二进制编码,降低网络开销30%
代码示例
from asyncneo4j import Neo4jClient
client = Neo4jClient("bolt://cluster-node:7687", pool_size=20)
async with client.transaction() as tx:
await tx.execute("CREATE (:Log {level: $level})", level="INFO")