如何从数据库(mysql或mongodb)每次选择N项?

时间:2017-02-19 12:28:13

标签: python mysql mongodb generator

情况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项?谢谢!

1 个答案:

答案 0 :(得分:-1)

使用限制10000 *({page} - 1),在sql中使用10000。 对于mongo,使用光标的功能跳过和限制。

然后你可以在每个循环中批量获得10k文档。