Om något sådant objekt är unikt baserat på en kombination av kolumner, måste du markera dessa som en sammansatt primärnyckel. Lägg till primary_key=True
sökordsparameter till var och en av dessa kolumner och släpper ditt id
kolumn helt och hållet:
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å så sätt kan din databas hantera dessa rader mer effektivt (inget behov av en inkrementerande kolumn), och SQLAlchemy vet nu automatiskt om två instanser av Showing
är samma sak.
Jag tror du kan sedan bara slå ihop din nya Showing
tillbaka till 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)
)