执行 SQL 命令时无法调用‘STR’对象

执行 SQL 命令时无法调用‘STR’对象

我尝试从一个函数中获取 3 个数据。X,Y,Z来自函数的数据get_gyro_data()。当我尝试执行这些数据以插入标签时TAB_MPU和列广西、贵阳、广州.我使用 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 .... )

答案1

在这一行你基本上是在做这样的事情:""()

您必须将 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)

此外,根据您的数据库连接器,您需要问号而不是字符串格式化程序。

相关内容