2016-10-27 6 views
0

Я использую Python для чтения данных Unicode, а затем его предварительной обработки и хранения в базе данных (Postgres)Препроцессирование данных с питоном

Теперь база данных имеет 3 таблицы с 4 атрибутами и 700000 кортежей каждый. Я прочитал данные и перечислил их в словарь python и перечислил в соответствии с тем, как мне нужно его использовать.

Теперь мне нужно перебирать все эти кортежи, выполнять некоторые вычисления и записывать снова в базе данных.

Я должен сделать 1000 итераций, подобных этим. Проблема состоит в том, что 1 итерация занимает около 50 минут, что делает невозможным выполнение этих итераций.

В любом случае, я могу сделать эти итерации быстрее?

Любая новая идея приветствуется. Не нужно в python.

+0

Для меня это звучит так, как будто это лучше сделать с помощью одного UPDATE, а не 700 000 однократных обновлений. ** [EDIT] ** ваш вопрос и добавить некоторые примеры данных и ожидаемый результат на основе этих данных. [** Отформатирован **] (http://stackoverflow.com/editing-help#code) ** текст **, пожалуйста, [без скриншотов] (http://meta.stackoverflow.com/questions/285551/why -may-i-not-upload-images-of-code-on-so-when-ask-a-question/285557 # 285557) –

+0

Набор данных не на английском языке. Я все равно отредактирую сообщение с помощью фиктивного набора данных. Теперь об обновлениях. Я обновляю только один раз. Нет никаких обновлений. Я беру все данные в виде списков python (скоро будет изменен на pandas), затем повторяется и выполняет все вычисления и обновляет базу данных с помощью конкатенированных команд обновления за один раз. Время, затрачиваемое на одну итерацию, - мое беспокойство. :) –

ответ

0

Вы не говорите, что обновляет каждую «итерацию», но ясно, что вы читаете и записываете 7 миллионов строк. Можно ли использовать базу данных для выполнения обновлений?

+0

Thanx за помощью. Прежде всего 0,7 миллиона строк в моем бб. Просто давая смутное представление о данных. Во-вторых, об обновлениях - я беру кортеж. Посмотрите один из его атрибутов (скажем, A) и получите все кортежи с одинаковым значением атрибута. Затем обновите другой атрибут (скажем, B) кортежа с помощью avg всех значений (из B в других кортежах с A принесите их). Это происходит в 2 таблицах. –

+0

После получения 2 новых обновленных значений я их умножаю и сохраняю в третьей таблице в соответствующем месте. –

+0

Я думал о том же, что и вы. Но я не знаю, насколько быстрее будет итерация в db. Итерация занимает 50 минут с питоном. Сократить его до 40 с БД - это не то, что я хочу. Я хочу около 6-8 итераций в час. –

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