后续While Loop无法刷新数据库查询

时间:2013-03-29 17:06:00

标签: python multithreading sqlalchemy

运行一个脚本,每2秒从数据库中提取一次数据,然后将结果传递给创建多个线程并处理返回数据的函数。

我的查询返回数据库中标记为is_deleted = False的项目。在下面的代码中,如果说我在数据库中有一个成员并且我将它们标记为已删除,或者我实际上删除了它们,我希望member.get_member()返回“无”,我使用{{1}处理}。问题是,即使我在脚本已经运行时从数据库中删除该成员,它也会带回“数据”,同时它应该带回“无”。如果我停止脚本并再次运行它,则会在返回“无”

时获取正确的数据

使用sqlAlchemy 0.8运行Python3.2

if statement

1 个答案:

答案 0 :(得分:0)

我通过反复试验找到了答案。在再次执行数据库查询之前运行session.close_all(),如下所示。

不确定的是,session.close_all()是否会关闭由被调用以处理所获取数据的线程运行的会话。如果它将关闭那些会话然后回到绘图板,我需要你的帮助。

def main():
    while True:
        time.sleep(2)

        #This solved it but am not sure if it will close other sessions 
        #that have been spawned by the threads
        dbase.session.close_all()  

        member = Member()
        myData, instance_counter = member.get_member()
        if myData == None:
            print("No member registered yet:", get_time_now())
        else:
            myqueuing(instance_counter, myData)   
            dbase.session.commit()

if __name__ == '__main__':
    main()