Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlalchemy中多对多关系的查询_Sql_Database_Flask_Sqlalchemy - Fatal编程技术网

sqlalchemy中多对多关系的查询

sqlalchemy中多对多关系的查询,sql,database,flask,sqlalchemy,Sql,Database,Flask,Sqlalchemy,我有两个db类通过关系表链接,我可以检索分配给每篇论文的问题。但是,我希望检索当前分配给当前论文的所有问题而不是,而不管它们分配给任何其他论文。我试过很多不同的方法,但都没有达到我的目的 我相信某种外部左连接应该可以做到这一点,但我无法找出正确的语法 提前感谢您的建议 以下是迄今为止的数据库结构: 课堂问题(db.Model): __tablename_uu='question' id=db.Column(db.Integer,主键=True) 论文=数据库关系( “纸”,次要class='qu

我有两个db类通过关系表链接,我可以检索分配给每篇论文的问题。但是,我希望检索当前分配给当前论文的所有问题而不是,而不管它们分配给任何其他论文。我试过很多不同的方法,但都没有达到我的目的

我相信某种外部左连接应该可以做到这一点,但我无法找出正确的语法

提前感谢您的建议

以下是迄今为止的数据库结构:

课堂问题(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()
未指定返回值

太棒了,谢谢!这么简单的解决方案我就是看不出来。