Существует известная проблема с fast_executemany
при работе со столбцами TEXT
или NTEXT
, как описано на GitHub здесь .
Проблема заключается в том, что когда pyodbc запрашиваетметаданные базы данных, чтобы определить максимальный размер столбца, драйвер возвращает 2 ГБ (вместо 0, как было бы возвращено для столбца [n]varchar(max)
).
pyodbc выделяет 2 ГБ памяти для каждого [N]TEXT
элемента в массиве параметров, и приложению Python быстро не хватает памяти.
Обходной путь должен использовать cursor.setinputsizes([(pyodbc.SQL_WVARCHAR, 0, 0)])
(как описано здесь ) чтобы уговорить pyodbc на обработку [N]TEXT
столбцов, таких как [n]varchar(max)
столбцов.
(Учитывая, что [N]TEXT
является устаревшим типом столбцов для SQL Server, маловероятно, что будетофициальное решение этой проблемы.)