Als een dergelijk object uniek is op basis van een combinatie van kolommen, moet u deze markeren als een samengestelde primaire sleutel. Voeg de primary_key=True
. toe zoekwoordparameter toe aan elk van deze kolommen, waarbij uw id
. wordt weggelaten kolom in totaal:
class Showing(Base):
__tablename__ = "showings"
time = Column(DateTime, primary_key=True)
link = Column(String)
film_id = Column(Integer, ForeignKey('films.id'), primary_key=True)
cinema_id = Column(Integer, ForeignKey('cinemas.id'), primary_key=True)
Op die manier kan je database deze rijen efficiënter afhandelen (er is geen oplopende kolom nodig), en SQLAlchemy weet nu automatisch of twee instanties van Showing
zijn hetzelfde.
Ik geloof je kunt dan gewoon je nieuwe Showing
. samenvoegen terug in de sessie:
def AddShowings(self, showing_times, cinema, film):
for showing_time in showing_times:
self.session.merge(
Showing(time=showing_time[0], link=showing_time[1],
film=film, cinema=cinema)
)