def verify_presto_column(self, column, expected_results): inspector = mock.Mock() inspector.engine.dialect.identifier_preparer.quote_identifier = mock.Mock() keymap = { "Column": (None, None, 0), "Type": (None, None, 1), "Null": (None, None, 2), } row = RowProxy(mock.Mock(), column, [None, None, None, None], keymap) inspector.bind.execute = mock.Mock(return_value=[row]) results = PrestoEngineSpec.get_columns(inspector, "", "") self.assertEqual(len(expected_results), len(results)) for expected_result, result in zip(expected_results, results): self.assertEqual(expected_result[0], result["name"]) self.assertEqual(expected_result[1], str(result["type"]))
def _rowproxy_fixture(self, keys, processors, row): class MockMeta(object): def __init__(self): pass metadata = MockMeta() keymap = {} for index, (keyobjs, processor, values) in \ enumerate(list(zip(keys, processors, row))): for key in keyobjs: keymap[key] = (processor, key, index) keymap[index] = (processor, key, index) return RowProxy(metadata, row, processors, keymap)
async def fetch_all(self, query: ClauseElement) -> typing.List[typing.Mapping]: assert self._connection is not None, "Connection is not acquired" query, args, context = self._compile(query) cursor = await self._connection.cursor() try: await cursor.execute(query, args) rows = await cursor.fetchall() metadata = ResultMetaData(context, cursor.description) return [ RowProxy(metadata, row, metadata._processors, metadata._keymap) for row in rows ] finally: await cursor.close()
async def fetch_all(self, query: Union[ClauseElement, str]) -> List[RowProxy]: assert self._connection is not None, "Connection is not acquired" query, args, context = self._compile(query) async with self._connection.cursor() as cursor: if args: await cursor.execute(query, *args) else: await cursor.execute(query) rows = await cursor.fetchall() metadata: ResultMetaData = ResultMetaData(context, cursor.description) return [ RowProxy(metadata, row, metadata._processors, metadata._keymap) for row in rows ]