flask-sqlalchemy:数据未更新[重复]

Posted

技术标签:

【中文标题】flask-sqlalchemy:数据未更新[重复]【英文标题】:flask-sqlalchemy: data is not updated [duplicate] 【发布时间】:2018-06-25 15:27:53 【问题描述】:

我正在结合 mysql 和 Flask API 运行 SQLAlchemy。我们对请求使用模型,并使用 db.session.add() 和 db.session.commit() 创建和更新更改。

我们也在并行运行数据处理——它是一个无限循环,每次运行都会查询数据库(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 查询,但这并没有改变结果。

提前致谢,

【问题讨论】:

你碰巧在使用 MySQL 吗? 是的,我正在使用 MySQL 可能是隔离级别问题? 【参考方案1】:

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

【讨论】:

我也做了同样的事情,但没有任何反应。它仍然获取旧记录。

以上是关于flask-sqlalchemy:数据未更新[重复]的主要内容,如果未能解决你的问题,请参考以下文章

flask-sqlalchemy数据库自动更新

使用 Flask-SQLAlchemy 在 Alembic 自动生成迁移中未检测到任何变化

错误flask-sqlalchemy NameError:未定义全局名称'joinedload'

Flask-SQLAlchemy:如何有条件地插入或更新一行

试图在 Flask-SQLAlchemy 中使查询不区分大小写 [重复]

RestKit/CoreData 未更新 - 创建重复项