如何在Flask/SQLAlchemy中选择reclated()?

mic*_*imo 5 python sqlalchemy flask 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'))
Run Code Online (Sandbox Code Playgroud)

如何在SQLAlchemy/Flask中执行select_related?

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

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

但我首先需要通过id获取具体问题,然后选择与之相关的问题

所以我需要这样的东西

Question.query.get(5).select_related()
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗?

Bar*_*ski 6

answers = Question.query.options(joinedload(Question.answers)).get(5).answers
Run Code Online (Sandbox Code Playgroud)

表达式Question.query.options(joinedload(Question.answers)).get(5)使用连接发出查询并计算Question实例.访问answers属性不会发出任何查询.

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

answers = Answer.query.filter_by(question_id=5).all()
Run Code Online (Sandbox Code Playgroud)