with session.begin(): for index, row in df.iterrows(): user = User(name=row[‘name’]) session.add(user) これは、for文で回る回数=トランザクションの回数ってこと?
はい、正確です。with session.begin(): 内のコードがトランザクションの境界を形成しています。その中でループが回るたびにトランザクションが開始され、トランザクション内でのデータベースの変更が一括でコミットされます。
この形式は、「トランザクション内で一連の操作をアトミックに処理する」といった要件に合致しています。各ループイテレーションでデータをデータベースに追加すると、その変更が一括でトランザクションにまとまり、エラーが発生しない限りは with ブロックを抜けるときに自動的にコミットされます。
このアプローチは、データベース操作が成功することと失敗することのどちらもアトミックにする必要がある場面で便利です。途中でエラーが発生した場合、トランザクション内のすべての変更がロールバックされ、データベースは以前の状態に戻ります。

ディスカッション
コメント一覧
まだ、コメントがありません