セッションイベント> 新しいトランザクションごとに任意のSQLステートメントを実行します。ユースケースによって異なりますが、接続レベルでイベントを使用することもできます。
セッションレベルでの方法は次のとおりです。
Session = sessionmaker()
@event.listens_for(Session, 'before_flush')
def set_max_heap_table_size(session, transaction, connection):
session.execute('SET max_heap_table_size = 1024 * 1024 * 64')
どちらの方法が効果的かわからない場合は、試してみて、テストケースをいくつか作成し、それが効果的かどうかを確認してください。
注意点が1つある可能性があります(不明):接続は切断されずにプールに戻されるため、設定が保持される可能性があります。この場合、デフォルトに戻すために何かを添付することもできます。 after_flush
で イベント。これについては完全にはわかりません。実験してみてください。これが不要な場合は、after_begin
を使用することもできます イベントですが、実際のbefore_close
はありません それをラップするイベントなので、問題が発生する可能性があります。