PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come creare un campo con un elenco di chiavi esterne in SQLAlchemy?

Se vuoi che molti attori siano associati a un film e molti film siano associati a un attore, ne vuoi molti a molti. Ciò significa che è necessaria una tabella di associazione. Altrimenti, potresti eliminare la normalizzazione e utilizzare un database NoSQL.

Una soluzione di tabella di associazione potrebbe assomigliare a:

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

Se non vuoi che ActorMovie sia un oggetto che eredita da Base, puoi usare sqlachlemy.schema.Table .