为什么?序列号readlinemysql中没有数据?

2024-04-28 07:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是一个连接到arduino的传感器序列号readline()打印传感器读数并成功。但是当我想用序列号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也不起作用。先谢谢你。你知道吗


Tags: importapidbsqlreadlinedatetimetimemysql
1条回答
网友
1楼 · 发布于 2024-04-28 07:37:16

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

  • 为查询参数添加占位符-%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()

相关问题 更多 >