PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak stworzyć pole z listą kluczy obcych w SQLAlchemy?

Jeśli chcesz, aby wielu aktorów było powiązanych z filmem, a wiele filmów było powiązanych z jednym aktorem, chcesz, aby wielu aktorów było powiązanych. Oznacza to, że potrzebujesz tabeli asocjacyjnej. W przeciwnym razie możesz odrzucić normalizację i użyć bazy danych NoSQL.

Rozwiązanie tabeli asocjacyjnej może przypominać:

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

Jeśli nie chcesz, aby ActorMovie był obiektem dziedziczącym po Base, możesz użyć sqlachlemy.schema.Table .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź wiersze z wieloma zduplikowanymi polami za pomocą Active Record, Rails i Postgres

  2. Napraw „BŁĄD:kolumna „colname” nie istnieje” w PostgreSQL podczas korzystania z UNION, EXCEPT lub INTERSECT

  3. python 2.7 do python 3.4 błąd nieobsługiwane typy operandów dla %:„bytes” i „dict”

  4. Czy jest coś takiego jak funkcja temp?

  5. PostgreSQL - przywrócona baza danych mniejsza niż oryginalna