Hvis et sådant objekt er unikt baseret på en kombination af kolonner, skal du markere disse som en sammensat primærnøgle. Tilføj primary_key=True
søgeordsparameter til hver af disse kolonner, og du slipper dit id
kolonne i alt:
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)
På den måde kan din database håndtere disse rækker mere effektivt (intet behov for en trinvis kolonne), og SQLAlchemy ved nu automatisk, om to forekomster af Showing
er det samme.
Jeg tror du kan så bare flette din nye Showing
tilbage i sessionen:
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)
)