sqlalchemy中多对多关系的查询
我有两个db类通过关系表链接,我可以检索分配给每篇论文的问题。但是,我希望检索当前分配给当前论文的所有问题而不是,而不管它们分配给任何其他论文。我试过很多不同的方法,但都没有达到我的目的 我相信某种外部左连接应该可以做到这一点,但我无法找出正确的语法 提前感谢您的建议 以下是迄今为止的数据库结构:sqlalchemy中多对多关系的查询,sql,database,flask,sqlalchemy,Sql,Database,Flask,Sqlalchemy,我有两个db类通过关系表链接,我可以检索分配给每篇论文的问题。但是,我希望检索当前分配给当前论文的所有问题而不是,而不管它们分配给任何其他论文。我试过很多不同的方法,但都没有达到我的目的 我相信某种外部左连接应该可以做到这一点,但我无法找出正确的语法 提前感谢您的建议 以下是迄今为止的数据库结构: 课堂问题(db.Model): __tablename_uu='question' id=db.Column(db.Integer,主键=True) 论文=数据库关系( “纸”,次要class='qu
课堂问题(db.Model):
__tablename_uu='question'
id=db.Column(db.Integer,主键=True)
论文=数据库关系(
“纸”,次要class='question\u in',backref='has\u question',lazy='dynamic')
课堂论文(数据库模型):
__tablename_uuu=‘纸张’
id=db.Column(db.Integer,主键=True)
#返回论文中的问题
定义所有问题(自我):
questions=Question.query.filter(Question.papers.any(id=self.id)).all()
回答问题
Question_in=db.Table('Question_in',
db.Column('question\u id',db.Integer,db.ForeignKey('question.id'),primary\u key=True),
db.Column('paper\u id',db.Integer,db.ForeignKey('paper.id'),primary\u key=True),
)
您应该能够遵循在所有问题
函数中使用的相同逻辑,并使用子查询()将其过滤掉。
:
def未分配(自身):
分配的_questions=db.session.query(Question.id)\
.filter(Question.papers.any(id=self.id)).subquery()
未分配=db.session.query(问题)\
.filter(Question.id.notin_(已分配的_问题)).all()
未指定返回值
太棒了,谢谢!这么简单的解决方案我就是看不出来。