def setup_tables(create=True, drop=False):
    """
    Binds the model classes to registered metadata and engine and (potentially) 
    creates the db tables.

    This function expects that you have bound the L{meta.metadata} and L{meta.engine}.

    @param create: Whether to create the tables (if they do not exist).
    @type create: C{bool}

    @param drop: Whether to drop the tables (if they exist).
    @type drop: C{bool}
    """
    global frames_table
    frames_table = Table('frames', meta.metadata,
                         Column('message_id', String(255), primary_key=True),
                         Column('sequence', BigInteger,
                                primary_key=False, autoincrement=True),
                         Column('destination', String(255), index=True),
                         Column('frame', PickleType),
                         Column('queued', DateTime, default=func.now()))

    if drop:
        meta.metadata.drop_all()

    if drop or create:
        meta.metadata.create_all()
Binds the model classes to registered metadata and engine and (potentially) 
    creates the db tables.

    This function expects that you have bound the L{meta.metadata} and L{meta.engine}.

    @param create: Whether to create the tables (if they do not exist).
    @type create: C{bool}

    @param drop: Whether to drop the tables (if they exist).
    @type drop: C{bool}