Hãy xem tài liệu:
Trình giữ chỗ biến luôn phải là
%s
, ngay cả khi một trình giữ chỗ khác (chẳng hạn như%d
cho số nguyên hoặc%f
cho phao) có thể trông thích hợp hơn:>>> cur.execute("INSERT INTO numbers VALUES (%d)", (42,)) # WRONG >>> cur.execute("INSERT INTO numbers VALUES (%s)", (42,)) # correct
Trong khi, truy vấn SQL của bạn chứa tất cả các loại trình giữ chỗ:
"""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)"""