'STR' não é chamado enquanto executa o comando sql [closed]

0

Eu tento obter 3 dados de uma função. X,Y,Z data da função get_gyro_data() . Quando tento executar esses dados para inserir a guia TAB_MPU e as colunas GX, GY, GZ . Eu uso o i2c para obter dados do MPU6050

  math functions 
  math functions
  .
  .
  .
  x= x/scaler
  y= y/scaler
  z=z/scaler
  return {'x': x, 'y': y, 'z': z}

def get_all_data(self):
  gyro = get_gyro_data()

Depois de obter dados giroscópios estou tentando escrever banco de dados como;

while True :
    mpu = MPU6050(0x68) //my sensor
    gyro_data = mpu.get_gyro_data()
    print(gyro_data['x'])
    print(gyro_data['y'])
    print(gyro_data['z'])
    Time = (time.strftime("%H:%M:%S"))
    Date = (time.strftime("%Y-%m-%d"))
    print (Time + " - " + Date)
    sql = ("""INSERT INTO 'TAB_TEMP' ('Date','Time','JX','JY','JZ','IX','IY','IZ') VALUES (%s,%s,%s,%s,%s,%s,%s,%s)"""(Date,Time,accel_data['x'],accel_data['y'],accel_data['z'],gyro_data['x'],gyro_data['y'],gyro_data['z'])) 
    cursor.execute(sql)  // execute sql command

Quando eu depurar o programa, recebi exceção TypeError: o objeto 'str' não pode ser chamado em sql= (""" INSERT .... ) line

    
por Mehmet Ali Küçük 19.05.2018 / 18:08

1 resposta

0

Na linha em que você está basicamente fazendo isso: ""()

Você terá que separar a string de consulta SQL e os argumentos, melhor na chamada cursor.execute() . Algo parecido com isto:

sql = """INSERT INTO 'TAB_TEMP' ('Date','Time','JX','JY','JZ','IX','IY','IZ') VALUES (%s,%s,%s,%s,%s,%s,%s,%s)"""
args = (Date,Time,accel_data['x'],accel_data['y'],accel_data['z'],gyro_data['x'],gyro_data['y'],gyro_data['z'])
cursor.execute(sql, args)

Além disso, dependendo do conector do banco de dados, você precisará de pontos de interrogação em vez do formatador de string.

    
por Timo 20.05.2018 / 10:27