Search code examples
mysqlpython-3.xdatabaseautomationdata-entry

How to fix the query errors


I want to put randomised (will later be substituted with real numbers) numbers and a timestamp in a mySQL database.

I am running the SQL Server on my PC, if I copy & paste the comand in the SQL Terminal it works, but with python it generates errors

import pymysql
import random
import time
import datetime

def dynamic_data_entry():
    date = "10.07.19"
    Temperatur = str(random.randint(0, 100))
    Feuchtigkeit = str(random.randint(20, 80))
    Operation = 'INSERT INTO messwerte_sensor1 (Time, Temperatur, Luftfeuchtigkeit) VALUES (%s, %s, %s);' , (date, Temperatur, Feuchtigkeit)
    db = pymysql.connect("127.0.0.1","root","Root","tests")
    cursor = db.cursor()
    cursor.execute(Operation)
    data = cursor.fetchone
    print(data)
    db.close()

dynamic_data_entry()

Solution

  • The problem is with your date format. In mysql, standar date format is aaaa-mm-dd, sou you will need to change it. Also, i modify your code to use prepared statements:

    import pymysql
    import random
    import time
    import datetime
    
    def dynamic_data_entry():
        date = "2019-07-10"
        Temperatur = str(random.randint(0, 100))
        Feuchtigkeit = str(random.randint(20, 80))
        Operation = 'INSERT INTO messwerte_sensor1 (Time, Temperatur, Luftfeuchtigkeit) VALUES (%s, %s, %s);' 
        db = pymysql.connect("127.0.0.1","root","Root","tests")
        cursor = db.cursor()
        cursor.execute(Operation,(date, Temperatur, Feuchtigkeit))
        data = cursor.fetchone()
        print(data)
        db.close()
    
    dynamic_data_entry()