Python 后续While循环无法刷新数据库查询

Python 后续While循环无法刷新数据库查询,python,multithreading,sqlalchemy,Python,Multithreading,Sqlalchemy,我正在运行一个脚本,该脚本每2秒从数据库获取一次数据,然后将结果传递给一个函数,该函数创建多个线程并处理返回的数据 def main(): while True: time.sleep(2) member = Member() myData, instance_counter = member.get_member() if myData == None: print("No member regis

我正在运行一个脚本,该脚本每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()
我的查询返回数据库中标记为
is_deleted=False
的项目。在下面的代码中,如果假设数据库中有一个成员,并且我将其标记为已删除,甚至实际上已删除,则我希望
成员.get_Member()
返回我使用
if语句处理的“None”。但问题是,即使我在脚本已经运行时从数据库中删除该成员,它也会返回“数据”,而应该返回“无”。如果我停止脚本并再次运行它,它将在返回“无”时获取正确的数据

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()
我正在运行Python3.2和sqlAlchemy 0.8

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()

我通过反复试验找到了答案。运行
会话。在再次执行数据库查询之前关闭\u all()
,如下所示

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()
我不确定的是
会话.close_all()
是否会关闭被调用以处理所获取数据的线程运行的会话。如果它将关闭这些会议,那么它将回到绘图板,我需要你的帮助

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()
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()