如何定期从Python程序向MySQL数据库插入数据

时间:2015-04-03 06:48:46

标签: python mysql raspberry-pi

我创建了一个温度传感器(使用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'

1 个答案:

答案 0 :(得分:0)

您使用本地变量时间覆盖导入的时间,并将其转换为字符串。

time = hour + ":" + minute + ":" + second