Si alguno de estos objetos es único en función de una combinación de columnas, debe marcarlos como una clave principal compuesta. Agregue el primary_key=True
parámetro de palabra clave a cada una de estas columnas, soltando su id
columna en total:
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)
De esa manera, su base de datos puede manejar estas filas de manera más eficiente (sin necesidad de una columna incremental), y SQLAlchemy ahora sabe automáticamente si dos instancias de Showing
son lo mismo.
Yo creo luego puede simplemente fusionar su nuevo Showing
volver a la sesió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)
)