PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment créer un champ avec une liste de clés étrangères dans SQLAlchemy ?

Si vous voulez que de nombreux acteurs soient associés à un film et que de nombreux films soient associés à un acteur, vous voulez un plusieurs à plusieurs. Cela signifie que vous avez besoin d'une table d'association. Sinon, vous pourriez abandonner la normalisation et utiliser une base de données NoSQL.

Une solution de table d'association pourrait ressembler à :

class Actor(Base):
    __tablename__ = 'actors'

    id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
    name = Column(String)
    nickname = Column(String)
    academy_awards = Column(Integer)

class Movie(Base):
    __tablename__ = 'movies'

    id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
    title = Column(String)

    actors = relationship('ActorMovie', uselist=True, backref='movies')

class ActorMovie(Base):
    __tablename__ = 'actor_movies'

    actor_id = Column(UUID(as_uuid=True), ForeignKey('actors.id'))
    movie_id = Column(UUID(as_uuid=True), ForeignKey('movies.id'))

Si vous ne voulez pas qu'ActorMovie soit un objet héritant de Base, vous pouvez utiliser sqlachlemy.schema.Table .