小编adh*_*ris的帖子

防止 SQLAlchemy 对过期对象重新运行查询的正确方法?

我在思考如何处理 Flask 请求中过期的 sqlalchemy 对象时遇到了麻烦。假设我执行以下操作:

from models import Foo, Bar

@app.route("/page")
def page():
  foos = Foo.query.all()

  for foo in foos:
    b = Bar(foo.data)
    db.session.add(b)

  db.session.commit()

  return render_template('page.html', foos=foos)
Run Code Online (Sandbox Code Playgroud)

然后在page.html

{% for foo in foos %}
  {{ foo. name }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

然后 SQLAlchemy 将对模板循环中的每个 foo 执行选择查询,因为session.commit()foos集合标记为已过期。如果我知道无法foos实际更改,那么防止len(foos)执行查询的正确方法是什么?同样,如果foos 更改,使用单个查询而不是多个查询刷新数据的正确方法是什么?

python sqlalchemy flask flask-sqlalchemy

3
推荐指数
1
解决办法
4401
查看次数

标签 统计

flask ×1

flask-sqlalchemy ×1

python ×1

sqlalchemy ×1