sql >> データベース >  >> RDS >> Mysql

SQLAlchemyでオブジェクトが存在しない場合にオブジェクトを挿入する最速の方法

    そのようなオブジェクトが列の組み合わせに基づいて一意である場合は、それらを複合主キーとしてマークする必要があります。 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)
            )
    



    1. EntityFrameworkFluent構文またはインライン構文を使用した再帰CTEの記述

    2. エラー:'フィールドリスト'MySQLエラーの不明な列''

    3. SQL Server接続文字列でポート番号を指定するにはどうすればよいですか?

    4. フェイルオーバー前またはフェイルオーバー後のスクリプトを使用したMySQLおよびMariaDBのレプリケーションフェイルオーバーの制御