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