私は SQLAlchemy を初めて使用し、元の作成者にアクセスせずにやや乱雑なコードベースを継承しました。
DBSession.flush()
作成者がデータが保存されていることを確認したいときはいつでも、コードは への呼び出しで書かれています。最初は、このコードで見たパターンに従っていただけでしたが、ドキュメントを読んでいると、これは不要なようです。自動フラッシュを配置する必要があります。さらに、「InvalidRequestError: Session is already flushing」というエラーを生成する AJAX 呼び出しでいくつかのケースに遭遇しました。
合法的に flush() の呼び出しを維持したいのは、どのようなシナリオですか?
これは Pyramid アプリであり、SQLAlchemy は次のようにセットアップされています。
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension(), expire_on_commit=False))
Base = declarative_base()