Я пытаюсь получить 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 ....)
строка
На той строке Вы - 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)
Также в зависимости от Вашего коннектора базы данных Вам были бы нужны вопросительные знаки вместо строкового средства форматирования.