gpt4 book ai didi

python - 使用 Python 将值发送到数据库(SenseHAT 项目)

转载 作者:行者123 更新时间:2023-11-29 06:50:21 29 4
gpt4 key购买 nike

我有一个适用于 Raspberry PI 3 的 SenseHAT,我想将一些值发送到外部数据库。

这是我的 .py 文件:

import time
import pymysql.cursors
from sense_hat import SenseHat

sense = SenseHat()

temperature = round(sense.get_temperature(), 1)
pressure = round(sense.get_pressure(), 1)
humidity = round(sense.get_humidity(), 1)

connection = pymysql.connect(host='HOSTNAME',
user='USERNAME',
password='PASSWORD',
db='DATABASE',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)

try:
with connection.cursor() as cursor:

sql = "INSERT INTO data SET dat_date=%d, dat_time=%d, dat_temperature=%d, dat_pressure=%d, dat_humidity=%d, idx_sensor=%s"
cursor.execute(sql, (time.strftime("%Y-%m-%d"),time.strftime("%H:%M:%s"),float(temperature),float(pressure),float(humidity),int(1)))

connection.commit()
finally:
connection.close()

sense.show_message("T:" + str(temperature) + " P:" + str(pressure) + " H:" + str(humidity), scroll_speed=0.7)

我的问题是在运行 SQL 查询时发生的。我在 sql 中创建了查询,并通过为变量赋值在下面的行中执行它。但是,即使我更改要插入的值的类型(%s%d),我仍然会出现错误消息。

这是值:

  • dat_date => MySQL 日期 (2017-12-11)
  • dat_time => MySQL 时间 (15:44:54)
  • dat_Temperature => SenseHAT 的温度 (32.6)
  • dat_Pressure => 来自 SenseHAT 的压力 (654.98)
  • dat_humidity => 来自 SenseHAT 的湿度 (12.6)
  • idx_sensor => Raspberry PI ID(在本例中为1)

这是错误消息:

Traceback (most recent call last):
File "sh_sr.py", line 22, in <module>
cursor.execute(sql, (time.strftime("%Y-%m-%d"),time.strftime("%H:%M:%s"),float(temperature),float(pressure),float(humidity),int(1)))
File "/home/pi/.local/lib/python2.7/site-packages/pymysql/cursors.py", line 164, in execute
query = self.mogrify(query, args)
File "/home/pi/.local/lib/python2.7/site-packages/pymysql/cursors.py", line 143, in mogrify
query = query % self._escape_args(args, conn)
TypeError: %d format: a number is required, not str

那么,有人看出我做错了什么吗?

(这是我第一次用Python开发东西。)

我使用的是 Raspbian => 最新版本 11.12.2017,PyMySQL 是通过 pip 安装的

最佳答案

添加简单引用并使用%s

sql = "INSERT INTO data SET dat_date='%s', dat_time='%s', dat_temperature=%s, dat_pressure=%s, dat_humidity=%s, idx_sensor=%s"

关于python - 使用 Python 将值发送到数据库(SenseHAT 项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47755484/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com