Cambiar lo siguiente debería solucionar su problema:
sql = "INSERT INTO record (temperature,humidity) VALUES (%s, %s)"
val = ("2.3","4.5") # You can also use (2.3, 4.5)
mycursor.execute(sql,val)
La API de la base de datos toma cadenas como argumentos y luego las convierte al tipo de datos apropiado. Su código arroja un error porque no espera %d
o %f
(int o float) tipos de datos.
Para obtener más información al respecto, puede consultar aquí