Có vẻ như đây là câu lệnh SQL của bạn:
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, tên của bảng không có thể được tham số hóa (vì nó được trích dẫn không đúng cách). Bạn sẽ cần phải đưa điều đó vào chuỗi theo một cách khác (tốt nhất là an toàn - bằng cách kiểm tra xem tên bảng được yêu cầu có khớp với tập hợp tên bảng trong danh sách trắng) ... ví dụ:
_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")))