Jika objek semacam itu unik berdasarkan kombinasi kolom, Anda perlu menandainya sebagai kunci primer komposit. Tambahkan primary_key=True parameter kata kunci ke setiap kolom ini, hapus id . Anda kolom sama sekali:
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)
Dengan begitu database Anda dapat menangani baris-baris ini dengan lebih efisien (tidak perlu kolom yang bertambah), dan SQLAlchemy sekarang secara otomatis mengetahui jika dua contoh Showing adalah hal yang sama.
Saya percaya Anda kemudian dapat menggabungkan Showing baru Anda kembali ke sesi:
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)
)