Votre problème n'est pas lié au volume de données en soi , c'est que certains de vos tuples contiennent numpy.int64
valeurs qui ne peuvent pas être utilisées directement comme valeurs de paramètre pour votre instruction SQL. Par exemple,
a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, a[1], 1, 1, 1)
crsr.execute(sql, params)
lancera
car la troisième valeur de paramètre est un numpy.int64
élément de votre tableau numpy a
. Conversion de cette valeur avec int()
évitera le problème :
a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, int(a[1]), 1, 1, 1)
crsr.execute(sql, params)
Au fait, la raison pour laquelle
sql = 'SET GLOBAL max_allowed_packet=50*1024*1024'
cursor.execute(sql)
n'a pas fonctionné, c'est que max_allowed_packet
est un paramètre MySQL qui n'a aucune signification pour Microsoft SQL Server.