私はデータベースに比較的慣れていません。これは、経験が答えるような質問だと確信しています。
PostgreSQL で SQLAlchemy を使用しています。複数のコンピューターにまたがる複数のプロセスがさまざまなタスクを実行し、データベースを更新するシステムをセットアップしています。テストではまだトランザクションの競合に遭遇していませんが、理論的にはまだ可能です。
Google で見つけた情報によると、データベースのロックを取得するか、トランザクションを再開する準備をする必要があるようです。残念ながら、これを実際に行う方法に関する貴重な情報はほとんどありません。
トランザクションを再開するには、SQLAlchemy によってスローされた例外があり、それをコードでキャッチして再試行自体を実行する必要があると思います。その例外は、一意性制約に違反した場合に SQLA がスローするものとは異なり、トランザクションの競合ではなくコードのバグを示していますか? 代わりにデータベースロックを使用したほうがよいでしょうか?
前もって感謝します!
- 編集 -
「ConcurrentModificationError」について学びました。名前は確かに私が探している例外のように聞こえます。ドキュメントによると、これはStaleDataErrorのエイリアスであり、その名前は正しいように聞こえますが、そのドキュメントはかなり不透明です。これは私が探しているエラーですか?
もう一度、どうもありがとう!