ऐसा लगता है कि यह आपका 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, तालिका का नाम नहीं है पैरामीटरयुक्त किया जा सकता है (क्योंकि यह अनुचित रूप से उद्धृत किया जाता है)। आपको इसे किसी अन्य तरीके से स्ट्रिंग में इंजेक्ट करने की आवश्यकता होगी (अधिमानतः सुरक्षित रूप से - यह जांच कर कि अनुरोध किया गया तालिका नाम तालिका नामों के श्वेतसूचीबद्ध सेट से मेल खाता है) ... उदाहरण:
_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")))