flask-sqlalchemy:数据未更新

时间:2018-06-25 15:27:54

标签: python sqlalchemy

我正在结合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查询,但这并没有改变结果。

预先感谢

1 个答案:

答案 0 :(得分:0)

我在while循环的末尾添加了db.session.close()-现在数据已重新加载。