sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo crear un campo con una lista de claves foráneas en SQLAlchemy?

Si desea que se asocien muchos actores a una película, y que se asocien muchas películas a un actor, desea muchos a muchos. Esto significa que necesita una tabla de asociación. De lo contrario, podría descartar la normalización y usar una base de datos NoSQL.

Una solución de tabla de asociación podría parecerse 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'))

Si no desea que ActorMovie sea un objeto heredado de Base, puede usar sqlachlemy.schema.Table .