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 在 Alembic 自动生成迁移中未检测到任何变化
错误flask-sqlalchemy NameError:未定义全局名称'joinedload'
Flask-SQLAlchemy:如何有条件地插入或更新一行