1、创建驱动对象实例 from neo4j.v1 import GraphDatabase uri = "bolt://localhost:7687" _driver = GraphDatabase.driver(uri, auth=("neo4j", "password")) _driver.close() #关闭连接。 2、 创建session对象
Session的创建是一个轻量级的操作,由于Session不是线程安全的,因此,Session通常应该在单个线程中短暂存续,用完之后立即销毁。在Python中,推荐在with上下文中创建和销毁Session对象:
def add_person(name): with _driver.session() as session: session.run("CREATE (a:Person {name: $name})", name=name)
Session对象是执行事务的逻辑上下文,Cypher支持两种方式来提交事务。
3、自动方式提交事务
以自动提交事务的方式执行Cypher查询,在Session对象执行Cypher语句之后,事务立即提交,因此,一次事务只能执行一个Cyper查询,返回的结果是StatementResult对象:
_session.run(statement, parameters=None)
4、事务函数提交事务
事务函数包含事务的工作单元,以事务函数方式提交事务是neo4j推荐的提交事务的方式,在事务函数方式中,一个事务可以执行多个Cypher查询。
首先,定义事务函数,传递相应的参数(Cypher语句和参数)
def create_person_node(tx, name): tx.run("CREATE (a:Person {name: $name}) RETURN id(a)", name=name)
然后,在Session对象中启动写事务(write_transaction)来调用事务函数,返回的结果是StatementResult对象:
def add_person(driver, name): with _driver.session() as session: # Caller for transactional unit of work return session.write_trans