Il tuo problema non è con il volume di dati di per sé , è che alcune delle tue tuple contengono numpy.int64
valori che non possono essere utilizzati direttamente come valori di parametro per l'istruzione SQL. Ad esempio,
a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, a[1], 1, 1, 1)
crsr.execute(sql, params)
lancerà
perché il terzo valore del parametro è un numpy.int64
elemento dal tuo array numpy a
. Conversione di quel valore con int()
eviterà il problema:
a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, int(a[1]), 1, 1, 1)
crsr.execute(sql, params)
A proposito, il motivo per cui
sql = 'SET GLOBAL max_allowed_packet=50*1024*1024'
cursor.execute(sql)
non ha funzionato è che max_allowed_packet
è un'impostazione MySQL che non ha alcun significato per Microsoft SQL Server.