0

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

is_deleted = False我的查询返回在数据库中都标记的项目。在下面的代码中,如果说我在数据库中有一个成员并且我将它们标记为已删除,甚至我实际上删除了它们,我希望member.get_member()返回“无”,我使用if statement. 但问题是,即使我在脚本已经运行时从数据库中删除了该成员,它也会带回“数据”,而它应该带回“无”。如果我停止脚本并再次运行它,它会在返回“无”时获取正确的数据

我正在使用 sqlAlchemy 0.8 运行 Python3.2

def main():
    while True:
        time.sleep(2)
        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()
4

1 回答 1

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()
于 2013-03-29T20:17:20.007 回答