В связи с природой моего приложения мне необходимо поддерживать быстрые вставки больших объемов данных в базу данных. Использование функции executemany() повышает производительность, но есть оговорка. Например, MySQL имеет параметр конфигурации max_allowed_packet, и если общий размер моих запросов на вставку превышает его значение, MySQL выдает ошибку.Проблема SQLAlchemy и max_allowed_packet
Вопрос №1: Есть ли способ сказать SQLAlchemy разбить пакет на несколько более мелких?
Вопрос №2: Если другие RDBS имеют схожие ограничения, как мне их обойти?
P.S. Я опубликовал этот вопрос раньше, но удалил его, когда ошибочно предположил, что, скорее всего, я не буду сталкиваться с этой проблемой. К сожалению, это не так.
Звучит хорошо, хотя есть два нюанса. Во-первых, значение max_allowed_packet, возможно, было задано командой, выданной DBA, а не в файле конфигурации, поэтому я думаю, что я скорее сделаю 'select @@ max_allowed_packet'. Во-вторых, знаете ли вы, нужны ли какие-либо другие базы данных, такие как Postgres или Oracle, аналогичные обходные пути? – dpq
Вы правы, '' select'' - это способ сделать это правильно. Как и в Postgres или Oracle, у меня нет опыта работы с этими базами данных, но быстрый Googling дал http://www.mail-archive.com/[email protected]/msg71116.html, поэтому я предполагаю, что По крайней мере, Postgres не имеет этого ограничения, но я могу ошибаться. – PhilS