我想收集来自不同设备和不同用户的几位玩家的歌曲(评分,播放次数,上次播放时间)的统计信息。我使用Python和SQL Alchemy。
我提出了以下表格布局:
我可以从我的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_id
和Stats
)而不是辅助表呢?