我正在结合MySQL和Flask API运行SQLAlchemy。我们对请求使用模型,并使用db.session.add()和db.session.commit()创建和更新更改。
我们还在并行处理数据-这是一个无限的while循环,每次运行时都会查询数据库(Model.query.filter_by(...)。all())-但是,我们只能得到之前的数据库中的数据,而不是更新的数据-数据本身已经在数据库中。如果我们重新启动应用程序,则会找到新数据。
使用db = SQLAlchemy(app)创建数据库,然后将其导入并在模型中使用
class Model(db.Model):
name = db.Column(db.String(255), index=True, unique=True)
active = db.Column(db.Boolean)
def create(self):
db.session.add(self)
db.session.commit()
def update(self):
db.session.commit()
def run_update():
while True:
models = Model.query.filter_by(active=True).all()
for model in models:
do_something(model)
time.sleep(300)
def do_something():
longtask = threading.Thread(target=long_task)
longtask.start()
def long_task():
// Update database here again
// Task has finished before it is run again.
time.sleep(10)
如果创建了新条目,则仅在重新启动应用程序后才在模型查询中捕获结果。
我已经尝试用db.session.query(Model)替换Model.query查询,但这并没有改变结果。
预先感谢
答案 0 :(得分:0)
我在while循环的末尾添加了db.session.close()-现在数据已重新加载。