为什么ser.readline数据不出现在mysql中?

时间:2016-05-22 00:21:07

标签: python mysql

我使用的传感器连接到arduino并使用ser.readline()打印传感器和成功的读数。但是当我想使用ser.readline将读取值发送到mysql时。它只传递设备名称和当前时间,并且mysql中显示的读数值为' 0'。这是我的编码。

import time
import serial
import smtplib
import datetime
import MySQLdb

db = MySQLdb.connect("192.168.0.103", "fyp", "123456", "system")
ser = serial.Serial('/dev/ttyACM0', 9600)

while True:
      api = ser.readline()
      current_time = datetime.datetime.now()
      print (api)

      sql = "INSERT INTO reading (series_no, time, api) VALUES ('test1', current_time, api)"
      data = (current_time, api)
      cur.execute(sql)

db.close()

使用%s也不起作用。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您没有正确参数化查询。需要解决的几件事:

  • 为查询参数添加占位符 - %s,没有引号
  • data元组传递给execute()
  • 提交交易

修正版:

sql = "INSERT INTO reading (series_no, time, api) VALUES ('test1', %s, %s)"
data = (current_time, api)
cur.execute(sql, data)
db.commit()