Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 26, 2014 19:43:03

bushart
Зарегистрирован: 2014-06-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с MySQl

Всем привет. Вопрос. Можно ли на Python, при работе с базой данных, на пример MySQL открыть соединение (запрос) и частями обрабатывать данные из ответа, не дожидаясь, пока база данных передаст все данные?

НА пример у меня в базе есть 1 000 000 записей и я хочу передавать их в другое хранилище партиями по 1000 с помощью python приложения. Я открываю соеденение с базой и пересылаю запрос на получение всех данных, но не жду, когда Python получит все данные. Мне нужны только 1000. Я получаю их, формирую пакет и отсылаю в другое хранилище. После этого начинаю собирать следующий пакет. И держу соеденение с базой, пока не обработаю все 1 000 000 записей.

з.ы. вариант с limit в sql не подойдет, нужно решение на уровне языка. У меня на руках есть java приложение, которое так умеет, правда я пока еще в нем не копался, но убедился через mysql show list, что limit оно не использует, но при это не ждет полной загрузки всех данных (иначе оно не смогло бы так быстро начать передачу т.к. данных у меня порядка 1 терабайта)

Офлайн

#2 Июнь 26, 2014 20:29:52

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Работа с MySQl

bushart
а почему лимит плох? Квадратическое время поиска?

Если вы используете Mysqldb можно использовать Server Side Cursor

Отредактировано Singularity (Июнь 26, 2014 20:33:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version