Python 后续While循环无法刷新数据库查询
我正在运行一个脚本,该脚本每2秒从数据库获取一次数据,然后将结果传递给一个函数,该函数创建多个线程并处理返回的数据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
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()