Pokud je některý takový objekt jedinečný na základě kombinace sloupců, musíte je označit jako složený primární klíč. Přidejte primary_key=True
do každého z těchto sloupců vynechá vaše id
sloupec celkem:
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)
Vaše databáze tak může zpracovávat tyto řádky efektivněji (není potřeba narůstajícího sloupce) a SQLAlchemy nyní automaticky pozná, zda jsou dvě instance Showing
jsou to samé.
Věřím pak můžete své nové Showing
sloučit zpět do relace:
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)
)