4

私のデータベース プロジェクトでは、SQL Alchemy を使用しています。オブジェクトをテーブルに追加し、検索し、更新し、削除する単体テストがあります。それが終わったら、データベースの変更を元に戻すためにsession.rollbackメソッドを呼び出すと思いました。シーケンスが元に戻されていないため、機能しません。プロジェクトの私の計画は、1 つのデータベースを持つことです。テスト データベースを作成したくありません。

データベースの変更を適切にロールバックする方法について、SQL Alchemy のドキュメントを見つけることができませんでした。データベーストランザクションをロールバックする方法を知っている人はいますか?

4

1 に答える 1

-3

Postgres は、ロールバックされるトランザクションでシーケンスが使用されている場合でも、シーケンスの進行をロールバックしません。(理由を理解するには、あるトランザクションがロールバックされる前に、同じシーケンスを使用する別のトランザクションがコミットされた場合にどうなるかを考えてください。)

しかし、いずれにせよ、単体テストにはインメモリ データベース (SQLite で簡単に実行できます) が最適です。

于 2012-09-16T01:35:34.157 に答える