ドキュメントをご覧ください:
変数のプレースホルダーは常に
%s
である必要があります 、別のプレースホルダー(%d
など)であっても 整数または%f
の場合 フロートの場合)より適切に見える場合があります:>>> cur.execute("INSERT INTO numbers VALUES (%d)", (42,)) # WRONG >>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
一方、SQLクエリにはすべてのタイプのプレースホルダーが含まれています:
"""INSERT INTO weather_data(temperature,humidity,wind,barometer,updated_on,place_id)
VALUES (%(temperature)f, %(humidity)f, %(wind)f, %(barometer)f, %(date)s, %(place_id)d)"""