我在'view.py'程序(HTML重定向器)中创建了一个线程,该线程负责更新包含数据库中数据的实例。这个想法是在这些实例中每15秒刷新一次来自DB的数据,因此当用户刷新HTML页面时,数据就可用。
代码:
#defining the Thread Function
def set_global_vars():
while True:
global ALL_SERVERS_FROM_DB
time.sleep(15)
ALL_SERVERS_FROM_DB = ServersManipulator(Server().query_all())
set_vars_thread = threading.Thread(target=set_global_vars)
set_vars_thread .start()
# Redirecting to servers page uging ALL_SERVERS_FROM_DB
@page.route('/servers', methods=['GET', 'POST'])
def servers(server='ALL'):
return render_template('servers.html', server_man=ALL_SERVERS_FROM_DB, server=server)
问题是,如果我添加了一个新条目,该条目应该影响“ ALL_SERVERS_FROM_DB”,它不会反映在使用该实例填充表的HTML页面上。
希望我很清楚,有人可以帮助我。
亲切问候
答案 0 :(得分:1)
好吧, 事实证明,每次我从数据库查询时,我都必须重新创建数据库引擎会话,否则,它似乎使用了某种缓存。
def query_all(self):
"""
Purpose:
Retrieves all entries related to this Class from Database
Parameters:
"""
global DBSession
DBSession = sessionmaker(bind=DBENGINE)() # <- I've added this to work
result = DBSession.query(type(self)).order_by(type(self).id)
DBSession.close()
return result
在我仅实例化对象时才启动DBsession。
致谢