Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najszybszy sposób na wstawienie obiektu, jeśli nie istnieje z SQLAlchemy

Jeśli jakikolwiek taki obiekt jest unikalny na podstawie kombinacji kolumn, musisz oznaczyć go jako złożony klucz podstawowy. Dodaj primary_key=True parametr słowa kluczowego do każdej z tych kolumn, upuszczając swój id kolumna łącznie:

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)

W ten sposób Twoja baza danych może wydajniej obsługiwać te wiersze (nie ma potrzeby zwiększania kolumny), a SQLAlchemy teraz automatycznie wie, czy dwie instancje Showing są tym samym.

wierzę możesz po prostu scalić swoje nowe Showing powrót do sesji:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz funkcję przez MySQLdb

  2. Hibernacyjne szyfrowanie bazy danych całkowicie przejrzyste dla aplikacji

  3. Uzyskaj tylko rekordy utworzone dzisiaj w laravel

  4. Jak używać adnotacji hibernacji, aby dodać indeks do Lob / Clob / tinyblob?

  5. Zapytanie pełnotekstowe z pojedynczym cytatem