PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como criar um campo com uma lista de chaves estrangeiras no SQLAlchemy?


Se você deseja que muitos atores sejam associados a um filme, e muitos filmes sejam associados a um ator, você quer muitos-para-muitos. Isso significa que você precisa de uma tabela de associação. Caso contrário, você pode descartar a normalização e usar um banco de dados NoSQL.

Uma solução de tabela de associação pode ser semelhante 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 você não quiser que o ActorMovie seja um objeto herdado do Base, você pode usar sqlachlemy.schema.Table .