Как выполнить итерации через таблицу MySQL с Python?

У меня есть сценарий Python, который использует интерфейс MySQLdb для загрузки различных файлов CSV в таблицы MySQL.

В моем коде я пользуюсь стандартной библиотекой CSV Python для чтения CSV, затем я вставляю каждое поле в таблицу по одному, с помощью INSERT запрос. Я делаю это вместо использования LOAD DATA так, чтобы я мог преобразовать нулевые значения и другие незначительные очистки на основе на поле.

Формат таблицы в качестве примера:

`id_number` | `iteration` | `date`     | `value`
102         | 1           | 2010-01-01 | 63
102         | 2           | 2010-01-02 | NULL
102         | 3           | 2010-01-03 | 65

Нулевое значение во втором повторении id_number = 102 представляет случай где value не изменился с предыдущего дня т.е. value остается 63.

В основном я должен преобразовать эти нулевые значения в их правильные значения. Я могу вообразить 4 способа сделать это:

  1. После того как все вставляется в таблицу, выполните запрос MySQL, который делает итерацию и замену совершенно отдельно.

  2. После того как все вставляется в таблицу, выполняет запрос MySQL для передачи некоторых данных обратно Python, процесс в Python затем выполняет запрос MySQL для обновления правильных значений.

  3. Сделайте обработку в Python на основе на поле, прежде чем каждый вставит.

  4. Вставьте во временную таблицу и используйте SQL для вставки в основную таблицу.

Я мог, вероятно, разработать, как сделать № 2 и возможно № 3, но понятия не иметь, как сделать № 1 или № 4, который я думаю, лучшие методы, поскольку он затем не требует никаких коренных изменений к коду Python.

Мой вопрос A) какой из вышеупомянутых методов является "лучшим" и "самым чистым"? (Скорость не действительно проблема.) и B) как я достиг бы № 1 или № 4?

Заранее спасибо :)

1
задан edanfalls 28 June 2010 в 16:38
поделиться

1 ответ

Я думаю, у вас будет больше всего контроля и меньше всего работы с вариантом #3, особенно если вы хотите сохранить существующие значения поверх нулевых, я думаю, вы рискуете перезаписать их с вариантом #1.

Если скорость не является проблемой, для каждой записи в CSV, сравните ее с существующей записью, и обновите или вставьте запись с предпочтительными значениями.

2
ответ дан 2 September 2019 в 23:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: