运行一个脚本,每2秒从数据库中提取一次数据,然后将结果传递给创建多个线程并处理返回数据的函数。
我的查询返回数据库中标记为is_deleted = False
的项目。在下面的代码中,如果说我在数据库中有一个成员并且我将它们标记为已删除,或者我实际上删除了它们,我希望member.get_member()
返回“无”,我使用{{1}处理}。问题是,即使我在脚本已经运行时从数据库中删除该成员,它也会带回“数据”,同时它应该带回“无”。如果我停止脚本并再次运行它,则会在返回“无”
使用sqlAlchemy 0.8运行Python3.2
if statement
答案 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()