File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -190,6 +190,27 @@ def one_or_none(self):
190
190
except StopIteration :
191
191
return answer
192
192
193
+ def to_dict_list (self ):
194
+ """Return the result of a query as a list of dictionaries.
195
+ In each dictionary the key is the column name and the value is the
196
+ value of the that column in a given row.
197
+
198
+ :rtype:
199
+ :class:`list of dict`
200
+ :returns: result rows as a list of dictionaries
201
+ """
202
+ rows = []
203
+ for row in self :
204
+ rows .append (
205
+ {
206
+ column : value
207
+ for column , value in zip (
208
+ [column .name for column in self ._metadata .row_type .fields ], row
209
+ )
210
+ }
211
+ )
212
+ return rows
213
+
193
214
194
215
class Unmergeable (ValueError ):
195
216
"""Unable to merge two values.
Original file line number Diff line number Diff line change @@ -1913,6 +1913,19 @@ def test_execute_sql_w_manual_consume(sessions_database):
1913
1913
assert streamed ._pending_chunk is None
1914
1914
1915
1915
1916
+ def test_execute_sql_w_to_dict_list (sessions_database ):
1917
+ sd = _sample_data
1918
+ row_count = 40
1919
+ _set_up_table (sessions_database , row_count )
1920
+
1921
+ with sessions_database .snapshot () as snapshot :
1922
+ rows = snapshot .execute_sql (sd .SQL ).to_dict_list ()
1923
+ all_data_rows = list (_row_data (row_count ))
1924
+ row_data = [list (row .values ()) for row in rows ]
1925
+ sd ._check_row_data (row_data , all_data_rows )
1926
+ assert all (set (row .keys ()) == set (sd .COLUMNS ) for row in rows )
1927
+
1928
+
1916
1929
def _check_sql_results (
1917
1930
database ,
1918
1931
sql ,
You can’t perform that action at this time.
0 commit comments