自分の好きなシリーズを持つことができるユーザーがいて、シリーズが外部キーであるエピソードがあり、好きなシリーズのユーザーからすべてのエピソードを取得しようとしています。 私はFlask-SQLAlchemyを使用しています。SQLAlchemy:特定のユーザーのfavorite_seriesからすべてのエピソードを取得
データベース:
db = SQLAlchemy(app)
# cross table for user-series
favorite_series = db.Table('favorite_series',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('series_id', db.Integer, db.ForeignKey('series.id'))
)
# user
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
favorite_series = db.relationship('Series', secondary=favorite_series,
backref=db.backref('users', lazy='dynamic'))
# series
class Series(db.Model):
__tablename__ = 'series'
id = db.Column(db.Integer, primary_key=True)
# episode
class Episode(db.Model):
__tablename__ = 'episode'
id = db.Column(db.Integer, primary_key=True)
series_id = db.Column(db.Integer, db.ForeignKey('series.id'))
series = db.relationship('Series',
backref=db.backref('episodes', lazy='dynamic'))
友達がSQL
select user_id,series.name,episode.name from (favorite_series left join series on favorite_series.series_id = series.id) left join episode on episode.series_id = series.id where user_id=1;
Altoughで私を助け、私はSQLAlchemyのAPIでそれをしたいが、それは作業を取得するために管理することはできません。
EDIT:
私の最終的な作業の結果:私はフラスコについては知らないが、フラスコSQLAlchemyののドキュメントから、ORMので、それは宣言型の使用思わ
episodes = Episode.query.filter(Episode.series_id.in_(x.id for x in g.user.favorite_series)).filter(Episode.air_time!=None).order_by(Episode.air_time)
あなたはSQLAlchemyのORMを使用していますか?フラスコのsqlalchemyは私の考えだ... – jadkik94
私は本当にこれで新しいです:)あなたは私に教えてください:) '>>> s = Series.query.get(1) >>> s.episodes ' –
TrueFurby