sql >> Databáze >  >> RDS >> Mysql

Nejrychlejší způsob vložení objektu, pokud neexistuje s SQLAlchemy

Pokud je některý takový objekt jedinečný na základě kombinace sloupců, musíte je označit jako složený primární klíč. Přidejte primary_key=True do každého z těchto sloupců vynechá vaše id sloupec celkem:

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)

Vaše databáze tak může zpracovávat tyto řádky efektivněji (není potřeba narůstajícího sloupce) a SQLAlchemy nyní automaticky pozná, zda jsou dvě instance Showing jsou to samé.

Věřím pak můžete své nové Showing sloučit zpět do relace:

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. PostgreSQL VACUUM a ANALÝZA Tipy osvědčených postupů

  2. Jak získat druhý největší nebo třetí největší záznam z tabulky

  3. Jak používat JSTL sql tag

  4. 3 Funkce, které získávají den, měsíc a rok z data v PostgreSQL