我有一个非常大的表,有250,000多行,其中很多都在其中一列中包含一个大的文本块.目前它的容量为2.7GB,预计至少增长十倍.我需要在表的每一行上执行特定于python的操作,但是一次只需要访问一行.
现在我的代码看起来像这样:
c.execute('SELECT * FROM big_table')
table = c.fetchall()
for row in table:
do_stuff_with_row
Run Code Online (Sandbox Code Playgroud)
当表格较小时,这种工作正常,但是当我尝试运行它时,表格现在比我可用的ram和python挂起的要大.是否有更好的(更有效率的)方法在整个表上逐行迭代?
Mar*_*ers 37
cursor.fetchall() 首先将所有结果提取到列表中.
相反,您可以迭代光标本身:
c.execute('SELECT * FROM big_table')
for row in c:
# do_stuff_with_row
Run Code Online (Sandbox Code Playgroud)
这会根据需要生成行,而不是首先加载所有行.
| 归档时间: |
|
| 查看次数: |
17396 次 |
| 最近记录: |