我有一个非常大的表,其中包含250,000+行,其中许多在其中一列中包含一个大文本块。目前,它的容量为2.7GB,预计至少会增长十倍。我需要在表的每一行上执行特定于python的操作,但一次只需要访问一行。
现在,我的代码如下所示:
c.execute('SELECT * FROM big_table') table = c.fetchall() for row in table: do_stuff_with_row
当表较小时,此方法工作正常,但表现在大于可用的ram,并且在我尝试运行它时python挂起。有没有更好的方法(更有效的RAM)来遍历整个表?
cursor.fetchall() 首先将所有结果提取到列表中。
cursor.fetchall()
相反,您可以遍历游标 本身 :
c.execute('SELECT * FROM big_table') for row in c: # do_stuff_with_row
这将根据需要生成行,而不是首先加载所有行。