Construct a Prettytable from any kinds of sqlalchemy query.

    :type engine_or_session: Union[Engine, Session]

    :rtype: PrettyTable

    Usage::

        from sqlalchemy import select

        sql = select([t_user])
        print(from_everything(sql, engine))

        query = session.query(User)
        print(from_everything(query, session))

        session.query(User)

def from_everything(everything, engine_or_session, limit=None, **kwargs):
    """
    Construct a Prettytable from any kinds of sqlalchemy query.

    :type engine_or_session: Union[Engine, Session]

    :rtype: PrettyTable

    Usage::

        from sqlalchemy import select

        sql = select([t_user])
        print(from_everything(sql, engine))

        query = session.query(User)
        print(from_everything(query, session))

        session.query(User)
    """
    if isinstance(everything, TextClause):
        return from_stmt(everything, engine_or_session, **kwargs)

    if isinstance(everything, Table):
        return from_table(everything, engine_or_session, limit=limit, **kwargs)

    if type(everything) is DeclarativeMeta:
        return from_object(everything, engine_or_session, limit=limit, **kwargs)

    if isinstance(everything, Query):
        return from_query(everything, engine_or_session, limit=limit, **kwargs)

    if isinstance(everything, Select):
        return from_sql(everything, engine_or_session, limit=limit, **kwargs)

    if isinstance(everything, ResultProxy):
        return from_resultproxy(everything, **kwargs)

    if isinstance(everything, list):
        return from_data(everything, **kwargs)