Объект 'STR' не может быть вызван при выполнении команды sql [закрыто]

Я пытаюсь получить 3 данных из одной функции. Данные X, Y, Z из функции get_gyro_data () . Когда я пытаюсь выполнить эти данные, чтобы вставить вкладку TAB_MPU и столбцы GX, GY, GZ . Я использую i2c для получения данных из 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()

После получения данных гироскопа я пытаюсь написать базу данных, например:

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

Когда я отлаживаю программу, я получил исключение TypeError: объект 'str' не может быть вызван в sql = (" "" INSERT ....) строка

0
задан 19 May 2018 в 09:08

1 ответ

На той строке Вы - basicly выполнение этого: ""()

Необходимо будет разделить строку SQL-запроса и аргументы, лучше всего в cursor.execute() звонить. Что-то вроде этого:

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)

Также в зависимости от Вашего коннектора базы данных Вам были бы нужны вопросительные знаки вместо строкового средства форматирования.

0
ответ дан 29 October 2019 в 07:30

Другие вопросы по тегам:

Похожие вопросы: