Consultez la documentation :
L'espace réservé des variables doit toujours être un
%s
, même si un espace réservé différent (tel qu'un%d
pour les entiers ou%f
pour les flottants) peut sembler plus approprié :>>> cur.execute("INSERT INTO numbers VALUES (%d)", (42,)) # WRONG >>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
Alors que votre requête SQL contient tous les types d'espaces réservés :
"""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)"""