def upload_data(cartodb_table, data, adapter=None):
    cl = CartoDBAPIKey(cartodb_table.apiKey, cartodb_table.domain)
    adapted = adapter(data)

    values = []
    for values_row in adapted['values']:
        values.append(','.join([sql_str(v) for v in values_row]))

    sql = 'INSERT INTO %s (%s) VALUES %s' % (
        cartodb_table.table,
        ','.join(adapted['column_names']),
        ','.join(['(%s)' % v for v in values]),
    )
    try:
        cl.sql(sql)
    except CartoDBException as e:
        traceback.print_exc()
        print('Exception while inserting:', e)
def most_recent_upload(cartodb_table, socrata_resource):
    """Get the most recent upload by table key"""
    cl = CartoDBAPIKey(cartodb_table.apiKey, cartodb_table.domain)
    sql = 'SELECT * FROM {} ORDER BY {} DESC LIMIT 1'.format(
        cartodb_table.table,
        socrata_resource.unique_key
    )
    try:
        return cl.sql(sql)['rows'][0]
    except CartoDBException as e:
        traceback.print_exc()
        print('Exception while inserting:', e)
    except IndexError:
        return None