Python如何检查数据库值是否相同

时间:2013-10-25 21:46:40

标签: python database firebase

您好我有这个firebase设置,它连接到一个根据firebase数据库说出文本的覆盆子pi。我的功能每5秒运行一次,我想检查是否有新消息。我将每条消息的时间存储在数据库中,现在我的方式就是检查新旧消息的时间是否相同。

我的两个问题是:

有没有更好的方法来检查消息时间,看看消息是否是新消息?

如何修复此代码,以免我收到UnboundLocalError: local variable 'the_time' referenced before assignment"错误

这是我的代码

import time
import subprocess
from firebase import firebase
firebase = firebase.FirebaseApplication('----', None)

message = firebase.get('/message', None)
name = firebase.get('/name', None)
the_time = firebase.get('the_time',None)
speak_message = message+" from "+ name

def showmessage():
        message=firebase.get('/message',None)
        name=firebase.get('/name',None)
        current_time = firebase.get('/the_time',None)
        speak_message=message+' from '+name

        #this is to set the audio jack on raspi
        subprocess.call(['amixer','cset','numid=3','1'])

        if current_time == the_time:
                #message is NOT new
                print 'message is NOT new'

        elif current_time != the_time:
                #message IS new
                #Shell script to run text-to-speech
                subprocess.call(['/home/pi/./speech.sh',speak_message])
                the_time = current_time


        time.sleep(5)
while True:
        showmessage()

1 个答案:

答案 0 :(得分:1)

你的脚本应该运行得很好,除了这部分中的一个小小的错误:

elif current_time != the_time:
    #message IS new
    #Shell script to run text-to-speech
    subprocess.call(['/home/pi/./speech.sh',speak_message])
    the_time = current_time

您正在分配the_time,这是一个全局变量。在showmessage函数中,您没有声明它,对吧?

要解决此问题,您必须将the_time声明为全局变量。

def showmessage():
    global the_time
    #all other stuff

这就是你需要改变的全部:) 希望这有帮助!