code: def select_as_tabledata(
          self, table_name, columns=None, where=None, extra=None, type_hints=None
      ):
          
  
          if columns is None:
              columns = self.fetch_attr_names(table_name)
  
          result = self.select(
              select=AttrList(columns), table_name=table_name, where=where, extra=extra
          )
  
          if result is None:
              return TableData(None, [], [])
  
          if type_hints is None:
              type_hints = self.fetch_data_types(table_name)
  
          return TableData(
              table_name,
              columns,
              result.fetchall(),
              type_hints=[type_hints.get(col) for col in columns],
          )
docs: Get data in the database and return fetched data as a
          :py:class:`tabledata.TableData` instance.
  
          :param str table_name: |arg_select_table_name|
          :param list columns: |arg_select_as_xx_columns|
          :param where: |arg_select_where|
          :type where: |arg_where_type|
          :param str extra: |arg_select_extra|
          :return: Table data as a :py:class:`tabledata.TableData` instance.
          :rtype: tabledata.TableData
          :raises simplesqlite.NullDatabaseConnectionError:
              |raises_check_connection|
          :raises simplesqlite.TableNotFoundError:
              |raises_verify_table_existence|
          :raises simplesqlite.OperationalError: |raises_operational_error|
  
          .. note::
              ``pandas`` package required to execute this method.