sql >> Database >  >> RDS >> PostgreSQL

Hoe maak je een veld met een lijst met externe sleutels in SQLAlchemy?

Als je wilt dat veel acteurs aan een film worden gekoppeld en veel films aan een acteur, dan wil je een veel-op-veel. Dit betekent dat je een associatietabel nodig hebt. Anders zou je normalisatie kunnen weggooien en een NoSQL-database kunnen gebruiken.

Een oplossing voor een associatietabel kan lijken op:

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

Als u niet wilt dat ActorMovie een object is dat van Base wordt geërfd, kunt u sqlachlemy.schema.Table gebruiken .




  1. Hoe zorg ik ervoor dat er geen raceconditie is in de MySQL-database bij het verhogen van een veld?

  2. ORA-06530:Verwijzing naar niet-geïnitialiseerde composiet

  3. Fix “SQL Server blokkeerde toegang tot VERKLARING ‘OpenRowset/OpenDatasource’ van component ‘Ad Hoc Distributed Queries’

  4. Hoe kan ik meer dan 1 record per dag selecteren?