def select_as_tabledata(<EOL>self, table_name, columns=None, where=None, extra=None, type_hints=None<EOL>):
if columns is None:<EOL><INDENT>columns = self.fetch_attr_names(table_name)<EOL><DEDENT>result = self.select(<EOL>select=AttrList(columns), table_name=table_name, where=where, extra=extra<EOL>)<EOL>if result is None:<EOL><INDENT>return TableData(None, [], [])<EOL><DEDENT>if type_hints is None:<EOL><INDENT>type_hints = self.fetch_data_types(table_name)<EOL><DEDENT>return TableData(<EOL>table_name,<EOL>columns,<EOL>result.fetchall(),<EOL>type_hints=[type_hints.get(col) for col in columns],<EOL>)<EOL>
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.