Sembra che questa sia la tua istruzione SQL:
cursor.execute("INSERT INTO %s (description, url) VALUES (%s, %s);", (table_name.encode("utf-8"), key.encode("utf-8"), data[key].encode("utf-8")))
IIRC, il nome della tabella non parametrizzabile (perché viene citato in modo improprio). Dovrai inserirlo nella stringa in un altro modo (preferibilmente in modo sicuro, controllando che il nome della tabella richiesto corrisponda a un set di nomi di tabelle nella whitelist)... es.:
_TABLE_NAME_WHITELIST = frozenset(['four'])
...
if table_name not in _TABLE_NAME_WHITELIST:
raise Exception('Probably better to define a specific exception for this...')
cursor.execute("INSERT INTO {table_name} (description, url) VALUES (%s, %s);".format(table_name=table_name),
(table_name.encode("utf-8"),
key.encode("utf-8"),
data[key].encode("utf-8")))