データベース(単一のテーブル)からの結果を照会する小さなプログラムを書いています。私はpython 3.3、sqlalchemy、およびpostgresデータベースを使用しています。
result = db_session.query(Data).all()
progress = 0
for row in result:
update_progress_bar(progress, len(result))
do_something_with_data(row)
progress += 1
変数 'result' には数千行が含まれ、データの処理には時間がかかります。これが、単純なプログレスバーを導入して、どれくらいの時間がかかるかを示す理由です。問題は、合計時間の 30% がデータベース (最初の行) をクエリしていることです。そのため、プログラムを開始すると、進行状況バーが動き始める前に大きな遅延が発生します。さらに、すべての結果をメモリに保持する必要はありません。別々に処理できます。
上記のプログラムを変更して、すべての行をメモリにロードせずに、すべての行が受信されるまで行を 1 つずつ取得する方法はありますか? さらに、データのクエリと処理の進行状況を監視したいと考えています。