SQLAlchemy查找具有单个查询的用户(可能需要加入)

时间:2017-06-05 13:57:45

标签: 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'))

# 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

我认为可以使用连接使用一个查询来完成,但我无法弄明白。请帮忙!

0 个答案:

没有答案