Seu problema não é com o volume de dados per se , é que algumas de suas tuplas contêm
numpy.int64
valores que não podem ser usados diretamente como valores de parâmetro para sua instrução SQL. Por exemplo, a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, a[1], 1, 1, 1)
crsr.execute(sql, params)
vai jogar
porque o terceiro valor do parâmetro é um
numpy.int64
elemento da sua matriz numpy a
. Convertendo esse valor com int()
evitará o problema:a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, int(a[1]), 1, 1, 1)
crsr.execute(sql, params)
Aliás, o motivo
sql = 'SET GLOBAL max_allowed_packet=50*1024*1024'
cursor.execute(sql)
não funcionou é que
max_allowed_packet
é uma configuração do MySQL que não tem nenhum significado para o Microsoft SQL Server.