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)
)