sql >> Database >  >> RDS >> Mysql

Snelste manier om een ​​object in te voegen als het niet bestaat met SQLAlchemy

Als een dergelijk object uniek is op basis van een combinatie van kolommen, moet u deze markeren als een samengestelde primaire sleutel. Voeg de primary_key=True . toe zoekwoordparameter toe aan elk van deze kolommen, waarbij uw id . wordt weggelaten kolom in totaal:

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)

Op die manier kan je database deze rijen efficiënter afhandelen (er is geen oplopende kolom nodig), en SQLAlchemy weet nu automatisch of twee instanties van Showing zijn hetzelfde.

Ik geloof je kunt dan gewoon je nieuwe Showing . samenvoegen terug in de sessie:

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



  1. Update MySQL-tabel en negeer dubbele vermeldingen

  2. Essentiële PostgreSQL-bewaking - deel 2

  3. Oracle:is er een tool om queries te traceren, zoals Profiler voor SQL Server?

  4. Unieke beperking voor meerdere kolommen