Bekijk de documentatie:
De tijdelijke aanduiding van de variabelen moet altijd een
%s
. zijn , zelfs als een andere tijdelijke aanduiding (zoals een%d
voor gehele getallen of%f
voor drijvers) lijkt misschien meer geschikt:>>> cur.execute("INSERT INTO numbers VALUES (%d)", (42,)) # WRONG >>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
Terwijl uw SQL-query alle soorten tijdelijke aanduidingen bevat:
"""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)"""