Da die gesamte Abfrage während der Ausführung der Abfrage in einem Zeichenfolgenformat vorliegen muss, also %s
sollte verwendet werden...
Nachdem die Abfrage ausgeführt wurde, wird der ganzzahlige Wert beibehalten.
Ihre Zeile sollte also lauten.
.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string))
Eine Erklärung finden Sie hier