Najszybszy sposób wstawiania obiektu, jeśli nie istnieje w SQLAlchemy

Więc jestem całkiem nowy w SQLAlchemy.

Mam model Pokazuje, który ma około 10.000 wierszy w tabeli. Oto klasa:

class Showing(Base):
    __tablename__   = "showings"

    id              = Column(Integer, primary_key=True)
    time            = Column(DateTime)
    link            = Column(String)
    film_id         = Column(Integer, ForeignKey('films.id'))
    cinema_id       = Column(Integer, ForeignKey('cinemas.id'))

    def __eq__(self, other):
        if self.time == other.time and self.cinema == other.cinema and self.film == other.film:
            return True
        else:
            return False

Czy ktokolwiek mógłby dać mi wskazówki na temat najszybszego sposobu wstawienia nowego pokazu, jeśli już nie istnieje. Myślę, że jest to nieco bardziej skomplikowane, ponieważ pokaz jest wyjątkowy tylko wtedy, gdy czas, cinmea i film są unikalne na pokazie.

Obecnie mam ten kod:

def AddShowings(self, showing_times, cinema, film):
    all_showings = self.session.query(Showing).options(joinedload(Showing.cinema), joinedload(Showing.film)).all()
    for showing_time in showing_times:
        tmp_showing = Showing(time=showing_time[0], film=film, cinema=cinema, link=showing_time[1])
        if tmp_showing not in all_showings:
            self.session.add(tmp_showing)
            self.session.commit()
            all_showings.append(tmp_showing)

który działa, ale wydaje się być bardzo powolny. Każda pomoc jest bardzo ceniona.

questionAnswers(1)

yourAnswerToTheQuestion