Очень связанный вопрос: Массовая вставка с SQLAlchemy ORM
Все дороги ведут в Рим , но некоторые из них пересекают горы, требуются паромы, но если вы хотите быстро туда добраться, просто езжайте по автостраде.
В этом случае автомагистраль должна использовать функцию execute_batch () из psycopg2 . Документация говорит это лучше всего:
Текущая реализация executemany()
(с использованием чрезвычайно благотворительного занижения) не особенно эффективна. Эти функции могут использоваться для ускорения повторного выполнения оператора с набором параметров. За счет уменьшения количества обращений к серверу производительность может быть на несколько порядков лучше, чем при использовании executemany()
.
В моем собственном тесте execute_batch()
равен примерно в два раза быстрее , чем executemany()
, и дает возможность настроить размер страницы для дальнейшей настройки (если вы хотите сжать последние 2-3% производительность вне водителя).
Эту же функцию можно легко включить, если вы используете SQLAlchemy, установив use_batch_mode=True
в качестве параметра при создании экземпляра движка с create_engine()