Neo4j-事务操作
事务操作的本质就是ACID:
事务要么全是或者全否(原子性)
事务只能提交有效数据(一致性)
当前事务操作的数据不允许被其他事务操作(隔离性)
事务结束之前,任何数据都不会改变消失,只有事务结束了,数据才发生改变(持久性)。
数据库的操作:开始连接-增删改查-关闭-事务。neo4j官方库提供两种操作:1,dirver.execute_query, 2, session.run。
session核心用法就是session.run(qeury, parameters)。官方给出的用法是session.execute_read/execute_write --> 自定义函数 —> session.run
from neo4j import GraphDatabase
url = "neo4j://localhost"
auth = ('neo4j', '123456')
# 定义一个使用session执行query的函数
def handle_query(session, query, query_args):
result = session.run(query, query_args)
return list(result)
# 利用session.execute_read/execute_write函数调用上面的函数,并将出session意外的参数传进去。
with GraphDatabase.driver(uri=url, auth=auth) as driver:
with driver.session(database='neo4j') as session:
query = "match (p:Person) where p.name starts with $filter return p.name as name order by name"
parameters = {'filter':'Ali'}
people = session.execute_read(handle_query, query, parameters)
for person in people:
print(person.data())