sqlalchemy多对多关系的中间表,可以增加其他字段吗?

sqlalchemy多对多关系的中间表,可以增加其他字段吗?

例如我有两个表用户表和视频表,user和video表,用来记录用户观看视频。二者为多对多关系。按照sqlalchemy惯例,往往都是建一个中间表。

user_video = Table('user_video', Base.metadata,

Column('user_id', ForeignKey('user.id'), primary_key=True),

Column('video_id', ForeignKey('video.id'), primary_key=True))

这时我想需要统计一个每个用户的每个视频的观看时长的字段,如果我直接加在中间表上一个time字段,感觉就很方便,原来用sql语句做过类似的表,但是不知道加上之后怎么用sqlalchemy的语法操作,还是说这样行不行得通?


回答:

最后还是自己在官方文档里找到了答案:Association Object;
代码如下:

class Association(Base):

__tablename__ = 'association'

left_id = Column(Integer, ForeignKey('left.id'), primary_key=True)

right_id = Column(Integer, ForeignKey('right.id'), primary_key=True)

extra_data = Column(String(50))

child = relationship("Child", back_populates="parents")

parent = relationship("Parent", back_populates="children")

class Parent(Base):

__tablename__ = 'left'

id = Column(Integer, primary_key=True)

children = relationship("Association", back_populates="parent")

class Child(Base):

__tablename__ = 'right'

id = Column(Integer, primary_key=True)

parents = relationship("Association", back_populates="child")

意思是中间表再和父子表建立关系。


回答:

学 sqlachemy,你可以看看这个项目--https://gitee.com/ousikongjia...

以上是 sqlalchemy多对多关系的中间表,可以增加其他字段吗? 的全部内容, 来源链接: utcz.com/a/158933.html

回到顶部