セッション設定で autoflush
の設定があります。
この設定により、挙動はどのように変化するのでしょうか?
また、True
or False
どちらに設定していたほうがいいのでしょうか?
少し調べた感じだと、
flush
は、commit
の一部として実行されるみたいです。
autocommit
はFalse
にするつもりなので、明示的にcommitはします。
そのため autoflush
はFalse
でも問題ないのかと考えていますが、どうなのでしょうか?
ご教示お願いいたします。
SQLAlchemyはORMとして使用できます。
ORMとは簡単に説明すると、DB上のテーブルと1対1に対応するPython変数をマッピングして、
Python変数を変更するだけで、DB上のテーブルを合わせて変更しちゃおうという仕組みです。
ただ、Python変数を変更するだけで常にDBまで変更していると効率が悪いので、
Python変数を変更しても、ある程度たまらないとDBまで変更しないことがあります。
このためた変更をDBに反映する動作をflushと言っています。
そして、このためる動作を限界まで行うのがautoflush=False。
あんまり貯めないのがautoflush=True。
DBのトランザクションとは関係ありませんが、commitするならその前にPython変数の内容を
DBに反映しとかないと意味ないので、autoflushの設定に関係なくcommit前にはflushされます。
質問はもう少し具体的でないと、どこから教えていいか分からない=大変すぎるので回答しない
ということになりますよ。
そんなに使ったことはないのですが、DB上に制約がかかってて、変更順序が重要な場合とかはこまめにflush()しないとエラーになった、という話は随分前に聞いたことあります。
あなたの回答
tips
プレビュー