PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie erstelle ich ein Feld mit einer Liste von Fremdschlüsseln in SQLAlchemy?

Wenn Sie möchten, dass einem Film viele Schauspieler und einem Schauspieler viele Filme zugeordnet werden, möchten Sie viele-zu-viele. Das bedeutet, dass Sie eine Assoziationstabelle benötigen. Andernfalls könnten Sie die Normalisierung wegwerfen und eine NoSQL-Datenbank verwenden.

Eine Assoziationstabellenlösung könnte wie folgt aussehen:

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'))

Wenn Sie nicht möchten, dass ActorMovie ein Objekt ist, das von Base erbt, können Sie sqlachlemy.schema.Table verwenden .