@@ -97,14 +97,18 @@ def session(self):
9797 """ Create a new session based on the graph database details
9898 specified within this driver:
9999
100+ >>> from neo4j.v1 import GraphDatabase
101+ >>> driver = GraphDatabase.driver("bolt://localhost")
100102 >>> session = driver.session()
101103
102104 """
103105 try :
104106 session = self .sessions .pop ()
105- session .reset ()
106107 except IndexError :
107- return Session (self )
108+ session = Session (self )
109+ else :
110+ session .reset ()
111+ return session
108112
109113
110114class Result (list ):
@@ -123,7 +127,7 @@ def __init__(self, session, statement, parameters):
123127 self .statement = statement
124128 self .parameters = parameters
125129 self .keys = None
126- self .complete = False
130+ self .more = True
127131 self .summary = None
128132 self .bench_test = None
129133
@@ -142,7 +146,7 @@ def on_record(self, values):
142146 def on_footer (self , metadata ):
143147 """ Called on receipt of the result footer.
144148 """
145- self .complete = True
149+ self .more = False
146150 self .summary = ResultSummary (self .statement , self .parameters , ** metadata )
147151 if self .bench_test :
148152 self .bench_test .end_recv = perf_counter ()
@@ -157,7 +161,7 @@ def consume(self):
157161 callback functions.
158162 """
159163 fetch_next = self .session .connection .fetch_next
160- while not self .complete :
164+ while self .more :
161165 fetch_next ()
162166
163167 def summarize (self ):
@@ -340,6 +344,7 @@ def __init__(self, driver):
340344 self .connection = connect (driver .host , driver .port , ** driver .config )
341345 self .transaction = None
342346 self .bench_tests = []
347+ self .closed = False
343348
344349 def __del__ (self ):
345350 self .connection .close ()
@@ -353,7 +358,7 @@ def __exit__(self, exc_type, exc_value, traceback):
353358 def reset (self ):
354359 """ Reset the connection so it can be reused from a clean state.
355360 """
356- self .connection .append_reset ()
361+ self .connection .reset ()
357362
358363 def run (self , statement , parameters = None ):
359364 """ Run a parameterised Cypher statement.
@@ -407,9 +412,12 @@ def run(self, statement, parameters=None):
407412 return result
408413
409414 def close (self ):
410- """ Return this session to the driver pool it came from.
415+ """ If still usable, return this session to the driver pool it came from.
411416 """
412- self .driver .sessions .appendleft (self )
417+ self .reset ()
418+ if not self .connection .defunct :
419+ self .driver .sessions .appendleft (self )
420+ self .closed = True
413421
414422 def begin_transaction (self ):
415423 """ Create a new :class:`.Transaction` within this session.
@@ -487,6 +495,7 @@ def close(self):
487495 self .closed = True
488496 self .session .transaction = None
489497
498+
490499class Record (object ):
491500 """ Record is an ordered collection of fields.
492501
0 commit comments