でサーバー側カーソルを使用しますは、どのように私は4million行を持つテーブルがあると私はexectureするpsycopg2を使用psycopg2
SELECT * FROM ..WHERE query
私は、サーバー側のカーソルの前に聞いたことがないと私はそのAを読んでいますあなたが多くの結果を期待するときは良い練習。
私はドキュメントが少し限られていると私はいくつかの基本的な質問があります。私のように、サーバー側のカーソルを宣言
まず:
cur = conn.cursor('cursor-name')
その後、私のようにクエリを実行します。
cur.itersize = 10000
sqlstr = "SELECT clmn1, clmn2 FROM public.table WHERE clmn1 LIKE 'At%'"
cur.execute(sqlstr)
私の質問は:私は今、何をしますか?どのように結果を得るのですか?
私のように行を反復ください:
row = cur.fetchone()
while row:
row = cur.fetchone()
または私は(fetchmanyを使用)、私はこれを実行します。
row = cur.fetchmany(10)
しかし、どのように私は結果を「スクロール」可能な第2のケースでは?
また、itersizeのポイントは何ですか?
しかし、私はすでにカーソルを使用しています。上のコードを見たことがありますか? – user1919
@ user1919はい、見ました。しかし、サーバー側のカーソルは開くと高速になります。いずれにしてもあなたには選択肢があります。両方の方法を試してください: 'fetchmany()'。 – Abelisto
Hmm。そうですか。しかし、この回答に基づいて私はすでにサーバー側のカーソルを使用していると思った:http://stackoverflow.com/questions/28343240/psycopg2-uses-up-memory-on-large-select-query – user1919