我有一个包含大约 3000 万个条目的数据库,数量很多,除了处理更大的数据库条目时我不希望有任何问题。
但是使用 py-postgresql 和.prepare()
语句我希望我可以在“ yield
”的基础上获取条目,从而避免只用来自数据库的结果来填满我的内存,而我显然不能?
这是我到目前为止所得到的:
import postgresql
user = 'test'
passwd = 'test
db = postgresql.open('pq://'+user+':'+passwd+'@192.168.1.1/mydb')
results = db.prepare("SELECT time time FROM mytable")
uniqueue_days = []
with db.xact():
for row in result():
if not row['time'] in uniqueue_days:
uniqueue_days.append(row['time'])
print(uniqueue_days)
甚至在if not row['time'] in uniqueue_days:
我用完内存之前,考虑到result()
可能在遍历它们之前获取所有结果,这并不奇怪?有没有办法让库postgresql
“分页”或批量处理结果,比如每轮 60k,或者甚至重新处理查询以完成更多工作?
提前致谢!
编辑:应该提到数据库中的日期是 Unix 时间戳,我打算在将它们%Y-%m-%d
添加到列表之前将它们转换为格式uniqueue_days
。