python知识图谱-利用py2neo实现neo4j的dao类
py2neo的基本使用以及cypher的基本使用:https://blog.youkuaiyun.com/Akun_2217/article/details/135445147?spm=1001.2014.3001.5502
1. dao类需要实现的功能
neo4j实现dao类的基本单位就是子图,包括单个节点、单个子图,都属于子图。
数据库的创建
创建子图
查询子图
更改子图
删除子图
事务功能
- 一次性插入多条数据时,要么都成功要么都失败
2. dao类具体设计
日志模块实现:https://blog.youkuaiyun.com/Akun_2217/article/details/135442731?spm=1001.2014.3001.5502
- 初始化对象进行连接:_init_
- 执行非查询cypher语句: execute
- 执行查询cypher语句: query
- 切换数据库: select_db
- 开启事务: begin_transaction
- 事务执行: transaction_execute
- 提交事务: commit_transaction
- 回滚事务: rollback_transaction
- 关闭连接 : close_connect
- 日志记录
3. 利用py2neo实现neo4j的dao类
实际工作中使用时,将neo4j日志路径以及连接参数,卸载一个配置文件中。
cypher语言使用两种形式, 以match为例,其他类似:
- run(“match (n:boss) where n.name=‘biden’ set n.name=$newname”, **{‘newname’:‘aoguanhai’})
- run(“match (n:boss) where n.name=‘biden’ set n.name=$newname”, newname=‘auguanhai’)
import py2neo
from utils import logger_utils
logger = logger_utils.get_logger('./')
class Neo4jDao:
def __init__(self, url, auth):
try:
self.graph_server = py2neo.GraphService(url, auth=auth)
logger.info(f'服务连接成功,主机地址:{
url}....')
except Exception as e:
logger.info(f'服务连接失败,原因:{
e}, 主机地址:{
url}')
# 使用默认数据库
self.graph_server = None
self.graph = None
self.tx