Alterar o seguinte deve resolver seu 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)
A API de banco de dados usa strings como argumentos e depois as converte no tipo de dados apropriado. Seu código está gerando um erro porque não está esperando
%d
ou %f
(int ou float) tipos de dados. Para obter mais informações sobre isso, você pode procurar aqui