#python #mysql #raspberry-pi
#python #mysql #raspberry-pi
Вопрос:
Я работаю над проектом raspberry pi, в котором я извлекаю данные из plc и сохраняю их в базе данных mysql.
Вот мой код:
import minimalmodbus
import serial
import mysql.connector
instrument = minimalmodbus.Instrument('/dev/ttyAMA0',3,mode='rtu')
instrument.serial.baudrate=115200
instrument.serial.parity = serial.PARITY_NONE
instrument.serial.bytesize = 8
instrument.serial.stopbits = 1
instrument.serial.timeout = 0.05
con = mysql.connector.connect(user='root',password='raspberry',host='localhost',
database='Fujiplc')
cursor = con.cursor()
try:
reg_value=instrument.read_register(102)
print reg_value
cursor.execute("insert into Register_Values values(%s)",(reg_value))
print ('One row inserted successfully.')
except IOError:
print("Failed to read from PLC.")
print (cursor.rowcount)
con.commit()
cursor.close()
con.close()
После запуска этого кода я получаю следующую ошибку:
Traceback (most recent call last):
File "/home/pi/rpi_to_plc_read.py", line 22, in <module>
cursor.execute("insert into Register_Values values(%d)",(reg_value))
File "/usr/local/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 477, in execute
stmt = operation % self._process_params(params)
File "/usr/local/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 355, in _process_params
"Failed processing format-parameters; %s" % err)
ProgrammingError: Failed processing format-parameters; argument 2 to map() must support iteration
Я прошел через множество решений, но проблему не смог решить.
Пожалуйста, помогите мне.
Комментарии:
1. 152 — это данные, которые программа извлекла из plc.
2. я также пробовал %d вместо %s
Ответ №1:
я думаю, должно быть.
cursor.execute("insert into Register_Values values(%s)",(reg_value))
con.commit()
Ответ №2:
Довольно распространенная ошибка в python.
(reg_value)
не является кортежем (reg_value,)
является кортежем