-1

I am trying to write some data to a database but I get the error:

must be real number, not str

After a keyboard interrupt (strg + c)

Traceback (most recent call last):
  File "mqtt_logger.py", line 61, in <module>
    time.sleep(1)                # Sleep for a second
KeyboardInterrupt

The function is:

Temperature = BME["Temperature"] #Temperature String from a MQTT Device
Temperature_float = float(Temperature)
print(Temperature_float)
db = initDatabase() #db is a initialised database
cursorObject = db.cursor()
try:
    sqlCommand   = """INSERT INTO tbl_data_jakob (temperature) VALUES (%f)"""
    cursorObject.execute(sqlCommand,Temperature_float)
    db.commit()
    print("Inserted (Hopefully)")
except Exception as e:
    db.rollback()
    print(e)
db.close()

The main Programm is:

ourClient = mqtt.Client("MQTT_Client")        # Create a MQTT client 

object
ourClient.connect("IP", 1883)    # Connect to the test MQTT broker
ourClient.subscribe("tele/Sensor")            # Subscribe to the topic 
db = initDatabase()
ourClient.on_message = messageFunction        # Attach the messageFunction to subscription
ourClient.loop_start()                # Start the MQTT client


# Main program loop
while(1):
    time.sleep(1)                # Sleep for a second
jakobheuer
  • 13
  • 1
  • 4

1 Answers1

0

SOLVED:

Orignial:

sqlCommand   = """INSERT INTO tbl_data_jakob (temperature) VALUES (%f)"""

%f is wrong, you need %s

NEW:

sqlCommand   = """INSERT INTO tbl_data_jakob (temperature) VALUES (%s)"""

Thanks for all the help.

jakobheuer
  • 13
  • 1
  • 4