そのようなオブジェクトが列の組み合わせに基づいて一意である場合は、それらを複合主キーとしてマークする必要があります。 primary_key=True
を追加します これらの各列にキーワードパラメータを設定し、id
を削除します 列全体:
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)
そうすることで、データベースはこれらの行をより効率的に処理でき(列をインクリメントする必要はありません)、SQLAlchemyはShowing
の2つのインスタンスかどうかを自動的に認識します。 同じことです。
信じる 次に、新しいShowing
をマージするだけです。 セッションに戻る:
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)
)