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