我有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