我有400萬行的表,我使用的psycopg2到execture一個:如何使用服務器端遊標與psycopg2
SELECT * FROM ..WHERE query
我沒有服務器端光標聽說過,我讀了一當你期望獲得很多結果時,這是一個好的做法
我找到的文檔位有限,我有一些基本的問題。
首先我聲明服務器端遊標如:
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)
但是在第二種情況下我怎麼能「滾動」的結果?
還什麼是itersize點?
但我已經使用遊標。你看過我的代碼嗎? – user1919
@ user1919是的,我看到了。但服務器端遊標在打開時速度更快。無論如何,你有另一種選擇。試試兩種方法:循環中的'fetchmany()'或上面提到的。 – Abelisto
嗯。我懂了。但基於這個答案,我認爲我已經使用服務器端遊標:http://stackoverflow.com/questions/28343240/psycopg2-uses-up-memory-on-large-select-query – user1919