我需要通过串口读取由Arduino发送的一些数字,然后将这些数字插入到MySQL表中。
这是我的密码:
import mysql.connector, serial
ser = serial.Serial(port='/dev/ttyACM3', baudrate='9600')
ser.isOpen()
read_port = ser.readline()
print (read_port)
mysql_connection = mysql.connector.connect(host="localhost", user="optim_admin", passwd="marcopolo", database="optimbit_acces")
cursor = mysql_connection.cursor()
sql1 = "insert into check_in (card, checkin) values (%s, Now()); ", (read_port)
cursor.execute(sql1)
mysql_connection.close()
这是我的错误:
Traceback (most recent call last):
File "/home/admin1/Documents/OptimAcces/db_service_connect.py", line 10, in <module>
cursor.execute(sql1, (str(read_port.decode('unicode_escape').encode('ascii', 'utf-8')), ))
File "/usr/local/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 492, in execute
stmt = operation.encode(self._connection.python_charset)
AttributeError: 'tuple' object has no attribute 'encode'
Process finished with exit code 1
如何纠正此错误?
发布于 2016-11-19 20:26:23
您正在从代码中输入错误的参数语法。试试这个:
from time import gmtime, strftime
date_time = strftime("%Y-%m-%d %H:%M:%S", gmtime())
sql1 = "insert into check_in (card, checkin) values (%s, %s)"
args = read_port, date_time
cursor.execute(sql1, args)
您所面临的错误消息是因为您的查询有错误的参数数,并且有更多的括号不正确关闭。
请参见下面cursor.execute的签名:
Definition: cursor.execute(self, query, args=None)
query -- string, query to execute on server
args -- optional sequence or mapping, parameters to use with query
希望能帮上忙!
发布于 2016-12-04 08:47:48
多亏了所有人。我通过将数据库从MariaDb转换为MySql来解决这个问题。现在它很好用。
谢谢你的帮助。
https://stackoverflow.com/questions/40697250
复制相似问题