22from .edge import Edge
33from prettytable import PrettyTable
44
5+
56class ResultSetColumnTypes (object ):
67 COLUMN_UNKNOWN = 0
78 COLUMN_SCALAR = 1
89 COLUMN_NODE = 2
910 COLUMN_RELATION = 3
1011
12+
1113class ResultSetScalarTypes (object ):
12- PROPERTY_UNKNOWN = 0
13- PROPERTY_NULL = 1
14- PROPERTY_STRING = 2
15- PROPERTY_INTEGER = 3
16- PROPERTY_BOOLEAN = 4
17- PROPERTY_DOUBLE = 5
14+ VALUE_UNKNOWN = 0
15+ VALUE_NULL = 1
16+ VALUE_STRING = 2
17+ VALUE_INTEGER = 3
18+ VALUE_BOOLEAN = 4
19+ VALUE_DOUBLE = 5
20+ VALUE_ARRAY = 6
21+ VALUE_EDGE = 7
22+ VALUE_NODE = 8
23+
1824
1925class QueryResult (object ):
2026 LABELS_ADDED = 'Labels added'
@@ -34,11 +40,11 @@ def __init__(self, graph, response):
3440 self .parse_statistics (response [0 ])
3541 else :
3642 self .parse_results (response )
37- self .parse_statistics (response [- 1 ]) # Last element.
43+ self .parse_statistics (response [- 1 ]) # Last element.
3844
3945 def parse_results (self , raw_result_set ):
4046 self .header = self .parse_header (raw_result_set )
41-
47+
4248 # Empty header.
4349 if len (self .header ) == 0 :
4450 return
@@ -48,7 +54,8 @@ def parse_results(self, raw_result_set):
4854 def parse_statistics (self , raw_statistics ):
4955 self .statistics = {}
5056
51- stats = [self .LABELS_ADDED , self .NODES_CREATED , self .PROPERTIES_SET , self .RELATIONSHIPS_CREATED , self .NODES_DELETED , self .RELATIONSHIPS_DELETED , self .INTERNAL_EXECUTION_TIME ]
57+ stats = [self .LABELS_ADDED , self .NODES_CREATED , self .PROPERTIES_SET , self .RELATIONSHIPS_CREATED ,
58+ self .NODES_DELETED , self .RELATIONSHIPS_DELETED , self .INTERNAL_EXECUTION_TIME ]
5259 for s in stats :
5360 v = self ._get_value (s , raw_statistics )
5461 if v is not None :
@@ -81,7 +88,7 @@ def parse_entity_properties(self, props):
8188 # [[name, value type, value] X N]
8289 properties = {}
8390 for prop in props :
84- prop_name = self .graph .get_property (prop [0 ])
91+ prop_name = self .graph .get_property (prop [0 ])
8592 prop_value = self .parse_scalar (prop [1 :])
8693 properties [prop_name ] = prop_value
8794
@@ -118,16 +125,16 @@ def parse_scalar(self, cell):
118125 value = cell [1 ]
119126 scalar = None
120127
121- if scalar_type == ResultSetScalarTypes .PROPERTY_NULL :
128+ if scalar_type == ResultSetScalarTypes .VALUE_NULL :
122129 scalar = None
123130
124- elif scalar_type == ResultSetScalarTypes .PROPERTY_STRING :
131+ elif scalar_type == ResultSetScalarTypes .VALUE_STRING :
125132 scalar = str (value )
126-
127- elif scalar_type == ResultSetScalarTypes .PROPERTY_INTEGER :
133+
134+ elif scalar_type == ResultSetScalarTypes .VALUE_INTEGER :
128135 scalar = int (value )
129136
130- elif scalar_type == ResultSetScalarTypes .PROPERTY_BOOLEAN :
137+ elif scalar_type == ResultSetScalarTypes .VALUE_BOOLEAN :
131138 value = value .decode () if isinstance (value , bytes ) else value
132139 if value == "true" :
133140 scalar = True
@@ -136,10 +143,22 @@ def parse_scalar(self, cell):
136143 else :
137144 print ("Unknown boolean type\n " )
138145
139- elif scalar_type == ResultSetScalarTypes .PROPERTY_DOUBLE :
146+ elif scalar_type == ResultSetScalarTypes .VALUE_DOUBLE :
140147 scalar = float (value )
141148
142- elif scalar_type == ResultSetScalarTypes .PROPERTY_UNKNOWN :
149+ elif scalar_type == ResultSetScalarTypes .VALUE_ARRAY :
150+ # array variable is introduced only for readability
151+ scalar = array = value
152+ for i in range (len (array )):
153+ scalar [i ] = self .parse_scalar (array [i ])
154+
155+ elif scalar_type == ResultSetScalarTypes .VALUE_NODE :
156+ scalar = self .parse_node (value )
157+
158+ elif scalar_type == ResultSetScalarTypes .VALUE_EDGE :
159+ scalar = self .parse_edge (value )
160+
161+ elif scalar_type == ResultSetScalarTypes .VALUE_UNKNOWN :
143162 print ("Unknown scalar type\n " )
144163
145164 return scalar
@@ -150,6 +169,7 @@ def parse_scalar(self, cell):
150169 2. The row after that will contain the data returned, or 'No Data returned' if there is none.
151170 3. Prints the statistics of the query.
152171 """
172+
153173 def pretty_print (self ):
154174 if not self .is_empty ():
155175 header = [col [1 ] for col in self .header ]
@@ -172,7 +192,7 @@ def pretty_print(self):
172192 print (str (tbl ) + '\n ' )
173193
174194 for stat in self .statistics :
175- print ("%s %s" % (stat , self .statistics [stat ]))
195+ print ("%s %s" % (stat , self .statistics [stat ]))
176196
177197 def is_empty (self ):
178198 return len (self .result_set ) == 0
@@ -191,7 +211,7 @@ def _get_stat(self, stat):
191211 return self .statistics [stat ] if stat in self .statistics else 0
192212
193213 @property
194- def labels_added (self ):
214+ def labels_added (self ):
195215 return self ._get_stat (self .LABELS_ADDED )
196216
197217 @property
@@ -217,4 +237,3 @@ def relationships_deleted(self):
217237 @property
218238 def run_time_ms (self ):
219239 return self ._get_stat (self .INTERNAL_EXECUTION_TIME )
220-
0 commit comments