如何在 Flask/SQLAlchemy 中 select_related()?

How to select_related() in Flask/SQLAlchemy?

拥有以下型号:

 class Question(db.Model):
   id = db.Column(db.Integer(), primary_key=True)
   title = db.Column(db.String(125))
   text = db.Column(db.Text())
   answers = db.relationship('Answer', backref='for_question')


class Answer(db.Model):
  id = db.Column(db.Integer(), primary_key=True)
  text = db.Column(db.Text())
  question_id = db.Column(db.Integer(), db.ForeignKey('question.id'))

如何在 SQLAlchemy/Flask 中执行 select_related?

我在文档中发现我可以做类似

的东西

session.query(Question).options(joinedload(Question.aswers))

但我需要先通过 id 获取特定问题,然后 select 与之相关

所以我需要这样的东西

Question.query.get(5).select_related()

我可以这样做吗?

answers = Question.query.options(joinedload(Question.answers)).get(5).answers

表达式 Question.query.options(joinedload(Question.answers)).get(5) 发出带有连接的查询并求值为 Question 实例。访问 answers 属性不会发出任何查询。

你也可以更明确地做到这一点

answers = Answer.query.filter_by(question_id=5).all()