2016-06-15 24 views
0

在Py2neo有追加的交易,然後提交它們作爲一個塊到服務器py2neo博爾特:如何tx.append語句轉換爲BOLT

from py2neo import Graph 
graph = Graph() 
tx = graph.cypher.begin() 
stmt1 = "CREATE (:Person {name: 'Guinevere'})" 
stmt2 = "CREATE (:Person {name: 'Tom'})" 
stmt3 = "CREATE (:Person {name: 'Anna'})" 
tx.append(stmt) 
tx.append(stmt2) 
tx.append(stmt3) 
tx.commit() 

我似乎無法找到的能力BOLT Neo4j-driver手冊中的等效語法來使其起作用。追加不被識別。

driver = GraphDatabase.driver("bolt://localhost", 
            auth=basic_auth('neo4j', 'password'), 
            encrypted=True, 
            trust=TRUST_ON_FIRST_USE) 
session = driver.session()  
tx = session.begin_transaction() 
tx.append(stmt1) --this does not work 
tx.append(stmt2) --this does not work 
tx.append(stmt3) --this does not work 
tx.commit() --this does not work 

什麼是正確的方法來做到這一點?

回答

1

以及我tryed你看到下面,它的工作:

from neo4j.v1 import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost")

session = driver.session()

stmt1 = "CREATE (:Person {name: 'Guinevere'})"

stmt2 = "CREATE (:Person {name: 'Tom'})"

stmt3 = "CREATE (:Person {name: 'Anna'})"

tx = session.begin_transaction()

tx.run(stmt1) # returned <neo4j.v1.session.StatementResult object at 0x7f3838f77a58>

tx.run(stmt2) # returned <neo4j.v1.session.StatementResult object at 0x7f3838f77a58>

tx.run(stmt3) # returned <neo4j.v1.session.StatementResult object at 0x7f3838f77e10>

tx.commit() # worked ;)

REF: https://neo4j.com/docs/api/python-driver/current/#example

0

JRenato的回答確實是對的。我被run和appead這個詞搞糊塗了。我相信他們的含義略有不同。

我也簡化了我的例子。我的問題是由於試圖對另一組附加語句使用相同的連接而引起的。似乎你需要關閉會話以避免問題 - 否則python可能會抱怨會話仍然對新的begin_transaction()開放()