我可以在SQLAlchemy中使用ORM类作为多对多关系的关联表吗?

时间:2013-11-19 14:55:42

标签: python sql orm sqlalchemy

我想收集来自不同设备和不同用户的几位玩家的歌曲(评分,播放次数,上次播放时间)的统计信息。我使用Python和SQL Alchemy

我提出了以下表格布局:

My ERP Diagram

我可以从我的Stats ORM类中访问所有相关的Commit对象作为列表。我还希望能够访问Song类中的相关Commit对象。按照SQLALchemy Documentation中的示例,我想出了 mtm 关系的关联表。

在代码中,它看起来像这样(full source):

songcommits_table = Table(
  'songcommits', Base.metadata,
  Column('commit_id', Integer, ForeignKey('commits.commit_id')),
  Column('song_id', Integer, ForeignKey('songs.song_id'))
)


class Commit(Base):

  __tablename__ = 'commits'

  commit_id = Column(Integer, primary_key=True)

  # ...

  songs = relationship(
    "Song", secondary=songcommits_table, backref="commits"
  )

  stats = relationship('Stat', backref='commit')

  def __repr__(self):
    return "<Commit {0.commit_id}>".format(self)

有效。但是我觉得它可以在没有表的情况下工作,使用已存储在stats表中的信息,但我不知道如何在ORM中制定它。

那么我怎样才能使用commit_id ORM类中已经存在的信息(song_idStats)而不是辅助表呢?

0 个答案:

没有答案