Ако някой такъв обект е уникален въз основа на комбинация от колони, трябва да ги маркирате като съставен първичен ключ. Добавете primary_key=True
параметър на ключова дума към всяка от тези колони, пускайки вашия id
колона като цяло:
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)
По този начин вашата база данни може да обработва тези редове по-ефективно (няма нужда от нарастваща колона) и SQLAlchemy вече автоматично знае дали два екземпляра на Showing
са едно и също нещо.
Вярвам след това можете просто да обедините новия си Showing
обратно в сесията:
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)
)