情况1:MySQL和pymysql
下面显示的代码块将生成一个生成器,如何从数据库中获取N个项目并将它们发送到多线程的某个函数。例如,每次我要从数据库中选择10k项目,总项目为1亿,所以总计数将是1亿/ 10k = 10k。
cursor.execute(sql)
for result in cursor:
yield result
情况2:MongoDB中,pymongo
for result in db.find():
yield result
Generator是一个在数据库有大量数据时节省大量内存的函数。
我尝试过的是itertool.islice,但它只返回前N个生成器项。那么对于这两种情况,你有没有更好的解决方案来每次选择N项?谢谢!
答案 0 :(得分:-1)
使用限制10000 *({page} - 1),在sql中使用10000。 对于mongo,使用光标的功能跳过和限制。
然后你可以在每个循环中批量获得10k文档。