2017-02-19 6 views
0

Вариант 1: Mysql, pymysqlКак выбрать N элементов каждый раз из базы данных (mysql или mongodb)?

Блок коды показывает ниже будет генерировать генератор, как можно получить N элементы из базы данных и отправить их к некоторой функции с примером multithreading.For, каждый раз, когда я хочу, чтобы выбрать 10k элементов из базы данных , а общая сумма составляет 100 миллионов, поэтому общий счет будет 100 миллионов/10k = 10k.

cursor.execute(sql) 
for result in cursor: 
    yield result 

Вариант 2: MongoDB, PyMongo

for result in db.find(): 
    yield result 

Генератор является функцией, которая сохраняет много памяти, когда база данных имеет большой набор данных.

То, что я пробовал, это itertool.islice, но он просто возвращает первые N элементов генератора. Итак, для этих двух случаев, есть ли у вас лучшее решение для выбора N элементов каждый раз? Благодаря!

ответ

-1

Использовать предел 10000 * ({страница} - 1), 10000 в sql. Для монго используйте функцию перемещения курсора и предел.

Затем вы можете получить 10 тыс. Документов в партии в каждом цикле.

+0

Спасибо за ваш ответ, не могли бы вы сделать его более понятным? –

Смежные вопросы