【问题标题】:SQLAlchemy how to get Column values from association table in many to many relationshipSQLAlchemy如何在多对多关系中从关联表中获取列值
【发布时间】:2017-05-25 21:48:07
【问题描述】:

我有 Playlist 和 Tracks 类,并将外键分配给 playlistsTracks。当我想获取播放列表曲目时,一切都好,我使用 playlist.tracks。但现在我还需要获取 playlistsTracks 的“id”。如何从关联表中获取“id”或任何额外的列?

playlistsTracks = db.Table('tbl_test_playlisttracks',
                    db.Column('id', db.Integer, primary_key=True),
                    db.Column('playlist_id', db.Integer, db.ForeignKey('tbl_test_playlists.id', ondelete='CASCADE')),
                    db.Column('track_id', db.Integer, db.ForeignKey('tbl_tracks.id'))
                    )



class Track(db.Model):
__tablename__ = 'tbl_tracks'

id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255))
audio_url = db.Column(db.Text)
movie_id = db.Column(db.Integer)
entry = db.relationship('Playlist', secondary=playlistsTracks, backref=db.backref('tracks', lazy='dynamic'))



class Playlist(db.Model):
__tablename__ = 'tbl_test_playlists'

id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255))
user_id = db.Column(db.String(255))
current_rev = db.Column(db.Integer, default=0)

【问题讨论】:

  • 参考pythoncentral.io/sqlalchemy-association-tables。它与从关联表中访问额外数据的场景相同。
  • 在为这篇文章挠了几个小时之后,我终于解决了我的问题并得到了我想要的任何东西。谢谢好友。
  • @ZohaibGhafoorBaloch 如果您能在这里找到解决方案,那就太好了

标签: python sqlalchemy many-to-many flask-sqlalchemy


【解决方案1】:
db.session.query(playlistsTracks).join(Track).all()

db.session.query(playlistsTracks.c.id).join(Track).all()

其他实体播放列表也一样

【讨论】:

  • 请您添加解释
  • 在 SQLAlchmey 中,表类与模型类不同。因此,如果您想将一个表类(关联表)与一个模型类连接起来,那么 sql alchemy 将使用与这两个表关联的外键。第二个示例仅显示如何根据问题中的要求过滤关联表的“id”列。
猜你喜欢
  • 2011-09-02
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 2022-07-07
  • 2020-04-29
相关资源
最近更新 更多