<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_gravityspy_triggers(tablename, engine=None, **kwargs):
 """Fetch data into an `GravitySpyTable` Parameters table : `str`, The name of table you are attempting to receive triggers from. selection other filters you would like to supply underlying reader method for the given format .. note:: For now it will attempt to automatically connect you to a specific DB. In the future, this may be an input argument. Returns ------- table : `GravitySpyTable` """

    from sqlalchemy.engine import create_engine
    from sqlalchemy.exc import ProgrammingError

    # connect if needed
    if engine is None:
        conn_kw = {}
        for key in ('db', 'host', 'user', 'passwd'):
            try:
                conn_kw[key] = kwargs.pop(key)
            except KeyError:
                pass
        engine = create_engine(get_connection_str(**conn_kw))

    try:
        return GravitySpyTable(fetch(engine, tablename, **kwargs))
    except ProgrammingError as exc:
        if 'relation "%s" does not exist' % tablename in str(exc):
            msg = exc.args[0]
            msg = msg.replace(
                'does not exist',
                'does not exist, the following tablenames are '
                'acceptable:\n    %s\n' % '\n    '.join(engine.table_names()))
            exc.args = (msg,)
        raise