【发布时间】:2019-04-10 03:29:45
【问题描述】:
我想弄清楚的是一个关于如何将数据插入多对多关系的简单示例。我正在尝试使用户可以成为许多团队的一部分,同时一个团队也可以拥有许多用户。
我阅读了 SQLAlchemy 文档,但它们没有说明如何将数据实际插入到多对多关系中。当我查看类似的问题时,他们不会过度插入多个元素——这正是我所需要的。它们主要展示如何通过关联表创建或进行更改。
class Teams(Base):
__tablename__ = 'teams'
id = Column(Integer, primary_key=True)
name = Column(String(64))
members = relationship('User', secondary=teams_association, back_populates='teams')
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(64))
teams = relationship('Teams', secondary=teams_association, back_populates='members')
teams_association = Table(
'teams_association',
Base.metadata,
Column('captain_id', Integer, ForeignKey('user.id')),
Column('teams_id', Integer, ForeignKey('teams.id'))
)
插入多对多数据
session.add_all([
Teams(
name='wildcats',
members=?? # <-- Members [1,3,4] How would I do a multiple insert here?
),
Teams(
name='horseman',
members=??
),
Teams(
name='jokers',
members=??
) ])
session.commit()
session.add_all([
User(
name='sam',
teams=? # [1,3] ex. A Member of Teams 1(wildcats) & 3(jokers)
),
User(
name='ashley',
teams=?
),
User(
name='jackson',
teams=?
),
User(
name='ethan',,
teams=?
),
User(
name='miles',
teams=?
) ])
【问题讨论】:
-
@eddwinpaz 这与插入无关。它介绍了如何将外键添加到关联表中。
标签: python sqlalchemy insert many-to-many