SQLAlchemy通过单个查询查找用户(可能需要连接)

SQLAlchemy通过单个查询查找用户(可能需要连接),sql,join,sqlalchemy,flask-sqlalchemy,Sql,Join,Sqlalchemy,Flask Sqlalchemy,我有三个有关系的模型 首先,参与者模型 class Participant(UserMixin, db.Model): __tablename__ = 'participants' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(64), index=True) team_id = db.Column(db.Integer, db.ForeignKey('teams.id')) # Relatio

我有三个有关系的模型

首先,参与者模型

class Participant(UserMixin, db.Model):
__tablename__ = 'participants'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), index=True)
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'))

# Relationships
team = db.relationship("Team", back_populates="members")
第二,事件模型

class Event(db.Model):
__tablename__ = 'events'
id = db.Column(db.Integer, primary_key=True)
第三,团队模式

class Team(db.Model):
__tablename__ = 'teams'
id = db.Column(db.Integer, primary_key=True)
event_id = db.Column(db.Integer, db.ForeignKey('events.id'))

# Relationships
members = db.relationship('Participant', back_populates="team")
如果他们的团队未连接到同一事件,则允许多个参与者使用相同的电子邮件地址

我正在寻找一个查询,它检查是否有一个具有给定电子邮件地址的参与者连接到一个团队,该团队连接到同一事件。我提前知道event.id和电子邮件地址

伪码

def check(EVENTID, EMAIL):
    if db.session.query(Team, Event, Participant). \
        filter(Team.event_id == EVENTID). \
        filter(Participant.team_id == Team.id). \ 
        filter(Participant.email == EMAIL).first():
        return true

我认为使用连接只需一个查询就可以完成,但我想不出来。请帮忙

您已经在使用联接执行单个查询。你到底有什么问题?这只是伪代码。它不起作用。我总是得不到任何结果。除了
事件
不需要在
FROM
列表中之外,您的查询没有问题。您确定有一行符合该条件吗?