Nếu bất kỳ đối tượng nào như vậy là duy nhất dựa trên sự kết hợp của các cột, bạn cần đánh dấu chúng là khóa chính tổng hợp. Thêm primary_key=True
tham số từ khóa cho từng cột này, làm giảm id
của bạn toàn bộ cột:
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)
Bằng cách đó, cơ sở dữ liệu của bạn có thể xử lý các hàng này hiệu quả hơn (không cần cột tăng dần) và SQLAlchemy hiện tự động biết nếu hai trường hợp của Showing
đều giống nhau.
Tôi tin sau đó bạn có thể hợp nhất Showing
mới của mình quay lại phiên:
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)
)