擅长:python、mysql、java
<p><code>psycopg2</code>(OP使用的)有一个接受<code>size</code>参数的<code>fetchmany</code>方法。使用它从数据库中读取一定数量的行。您可以使用值<code>n</code>过期,以平衡运行时和内存使用情况。在</p>
<p><code>fetchmany</code>文档:<a href="http://initd.org/psycopg/docs/cursor.html#cursor.fetchmany" rel="nofollow">http://initd.org/psycopg/docs/cursor.html#cursor.fetchmany</a></p>
<pre><code> rs_cursor = rs_db.cursor()
rs_cursor.execute("""SELECT %(sql_fields)s
FROM table1""" % {"sql_fields": sql_fields})
c = csv.writer(open(filename, "wb"))
c.writerow(headers)
n = 100
sqlData = rs_cursor.fetchmany(n)
while sqlData:
for row in sqlData:
c.writerow(row)
sqlData = rs_cursor.fetchmany(n)
rs_cursor.close()
</code></pre>
<p><br/>
您也可以使用生成器将其包装起来,以稍微简化代码:</p>
^{pr2}$