Я пытаюсь получить данные датчика с Arduino на RPi через USB, прочитать их в Python и вставить в базу данных MySQL. Несмотря на то, что тип данных, который я пытаюсь вставить, явно является строкой, я получаю следующую ошибку:
«TypeError: должен быть строкой или буфером только для чтения, а не кортежем»
База данных который я пытаюсь реализовать, обычно имеет 6 значений с плавающей запятой и в конце 1 значения типа int, но, согласно другим источникам, они говорят, что какой бы тип ни был, данные должны отправляться в виде строки. Итак, что я могу сделать, чтобы решить эту проблему?
Моя база данных:
+------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| humidity | float | YES | | NULL | |
| temperatur | float | YES | | NULL | |
| lightlevel | float | YES | | NULL | |
| airquality | float | YES | | NULL | |
| lpg | float | YES | | NULL | |
| gas | float | YES | | NULL | |
| pir | int(11) | YES | | NULL | |
+------------+---------+------+-----+---------+-------+
Вот мой код:
import serial
import mysql.connector
import MySQLdb
db = MySQLdb.connect(host = "localhost", user="root", passwd = "password", db = "sensordata")
cur = db.cursor()
ser = serial.Serial('/dev/ttyACM0',9600)
while 1:
serread = ser.readline()
a_list = serread.split()
map_object = map(float, a_list)
list_of_integers = list(map_object)
sql = ("""INSERT INTO datas VALUES (%s,%s,%s,%s,%s,%s,%s)""", (str(list_of_integers[0]), str(list_of_integers[1]), str(list_of_integers[2]), str(list_of_integers[3]), str(list_of_integers[4]), str(list_of_integers[5]), str(list_of_integers[6])))
cur.execute(sql)
db.commit()
print(list_of_integers)
# print(type(str(list_of_integers[0])))
Спасибо.