Я пытаюсь вставить данные, полученные через последовательный порт, в таблицу mysql, используя python 3, однако, когда я пытаюсь ввести свой оператор вставки, я получаю «TypeError: недостаточно аргументов для строки формата».Любая помощь будет принята с благодарностью!
Я попытался использовать ", (new_data)"
вместо "% (new_data)"
и получил ошибку синтаксиса SQL.Также попытался ".format(new_data)"
, который не выдал ошибку, но привел к пустым строковым полям или полям с плавающей запятой 0,00.
raw_data=ser.readline() #Fetch a line from the serial feed
new_data=raw_data.decode('ascii').rstrip() #Remove extraneous control characters
new_data=(new_data, ) #Convert to a tuple
#Result
#("'2019-5-21 7:55:5',0,3.1,25.6,315,2.2,316,11.0,248,56.6,56.9,0.00,0.73,100375.50,4.37,0.83",)
#Now insert into the database
sql="INSERT INTO reports (rec_time, wnddir, wndspd, wndgust, wndgustdir, wndspdavg2m, wnddiravg2m, wndgustavg10M, wndgustdiravg10M, humidity, tempf, rain, raindly, pressure, battery, light) VALUES ('%s', '%d', '%f', '%f', '%d', '%f', '%d', '%f', '%d', '%f', '%f', '%f', '%f', '%f', '%f', '%f')" % (new_data)
cursor.execute(sql)
Я ожидаю, что запись будет записана в базу данных, однако я получаю «TypeError: недостаточно аргументов для строки формата».Есть 16 полей, 16 заполнителей и 16 частей данных.Что я делаю неправильно?