У меня есть работа ETL, где я массово обновляю около 150 тыс. Строк. bulk_update_mappings
работает около 90 минут:
session.bulk_update_mappings(cls, object_list)
Здесь session
имеет autocommit
, установленный на False
. Я подозреваю, что это связано с тем, как SQLAlchemy работает с None
s в словарях, поэтому я хотел бы понять, как готовятся UPDATE
s.
- Как
None
обрабатываются в отображениях?
- Существует ли несколько
UPDATE
, выданных на основе ненулевых комбинаций столбцов?
- Поможет ли мне упорядочить объекты, основанные на том, какие столбцы равны нулю?
- Поможет ли обновление в чанках?
- Было бы быстрее просто обновить те, которые действительно должны быть обновлены, то есть сначала получить данные, сравнить и обновить?
Я использую Python 3.6 с SQLAlchemy 1.3.0. Спасибо за предложения!