我正在考虑在python中使用sqlite3库来进行一些数据存储。避免将太多数据加载到内存中对我来说很重要 - 可能存在大量(10+)千兆字节的数据,我希望能够以这样的方式访问它,即数据不会一次性加载到RAM中。 sqlite3会为我做到这一点吗?我正在考虑以下代码:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute('''SELECT * FROM table1''')
var = c.fetchall()
假设example.db
占用14 gb,table1
占用1 gb。将多少数据加载到RAM中?
答案 0 :(得分:3)
你几乎肯定不想使用fetchall()
,将将整个表加载到RAM中,加上需要的内务管理,所以“超过1 GB”就是答案你的问题。请改用fetchone()
。