Penso che il commento sull'utilizzo di questo con MySQL non sia del tutto completo. MySQLdb non esegue la sostituzione dei parametri nelle colonne, solo i valori (IIUC), quindi forse più come
placeholders = ', '.join(['%s'] * len(myDict))
columns = ', '.join(myDict.keys())
sql = "INSERT INTO %s ( %s ) VALUES ( %s )" % (table, columns, placeholders)
# valid in Python 2
cursor.execute(sql, myDict.values())
# valid in Python 3
cursor.execute(sql, list(myDict.values()))
Tuttavia, non stai eseguendo l'escape sulle colonne, quindi potresti voler controllare prima ....
Vedi http://mail.python.org/pipermail/tutor/ 2010-dicembre/080701.html per una soluzione più completa