RDBMS から 10000 個の数値を照会し、それらを json の形式で返す必要がある Web サービスがあります。ここには 2 つの問題があります。
- それらを効率的な方法で連結する方法は?result += next id にするのは良い考えではないと思います。Stackoverflow のアドバイスは .join を使用することです - エレガントですが、メモリ割り当てをどのように処理するかわかりません
- 私が理解している限り、ここでは .fetchAll() は多少高価になる可能性があります。
Pythonで行ごとにフェッチし、行から1つの数字のみを取得し、効率的な方法で結果に追加する方法はありますか?
簡単にするために、サンプルは少し人工的です。
私が念頭に置いている「おそらくメモリを独り占めする」短い解決策は、おおよそ次のようになります。
s = text("select id from users where ... ")
connection = engine.connect()
with connection :
rows = connection.execute(s).fetchall()
return "["+','.join(str(r[0]) for r in rows) + "]" # json array
これはすべて人工的に見え、一度に 10000 レコードをフェッチするのは得策ではありませんが、Python メモリ管理のベスト プラクティスを理解したいと考えています。
私が来たJavaの世界には、クラスStringBuilderと、DBから行ごとにフェッチする方法があります。