我创建了一个温度传感器(使用DS18B20温度传感器)并编写了python程序,每隔10秒读取并显示温度。它工作正常。后来,我修改了代码,将每10秒的记录保存到MySQL数据库。现在,问题是它在第一次读取时记录并将数据上传到数据库。然后,我收到一条错误消息。所以基本上,程序读取并上传到数据库一次,然后在错误后退出。 请告诉我如何解决这个问题! 非常感谢!
以下是代码:
import os
import time
import MySQLdb
import datetime
i = datetime.datetime.now()
db = MySQLdb.connect(host = "localhost", user = "root", passwd = "bb9125ap", db = "PY1")
cur = db.cursor()
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
temp_sensor = '/sys/bus/w1/devices/28-00042d6745ff/w1_slave'
def temp_raw():
f = open(temp_sensor,'r')
lines = f.readlines()
f.close
return lines
def read_temp():
lines = temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = temp_raw()
temp_output = lines[1].find('t=')
if temp_output != -1:
temp_string = lines[1].strip()[temp_output+2:]
temp_c = float(temp_string) / 1000.0
return temp_c
while True:
print "recording data into database(period = 5s.)....press ctrl+Z to stop!"
valT = str(read_temp())
year = str(i.year)
month = str(i.month)
day = str(i.day)
date = day + "-" + month + "-" + year
hour = str(i.hour)
minute = str(i.minute)
second = str(i.second)
time = hour + ":" + minute + ":" + second
try:
cur.execute("""INSERT INTO PY1.DUMP1(temp_c,rec_time,rec_date) VALUES(%s,%s,%s)""",(valT,time,date))
db.commit()
except:
db.rollback()
time.sleep(10)
cur.close()
db.close()
程序名称是temp1.py,根据我的编辑器第54行是db.rollback() 以下是我收到的错误消息
追踪(最近一次通话): 文件" temp1.py" ,第54行,在time.sleep(10) 属性:' STR'对象没有属性' sleep'
答案 0 :(得分:0)
您使用本地变量时间覆盖导入的时间,并将其转换为字符串。
time = hour + ":" + minute + ":" + second