Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ungültiger Parametertyp (numpy.int64) beim Einfügen von Zeilen mit executemany()

Ihr Problem liegt nicht im Datenvolumen an sich , enthalten einige Ihrer Tupel numpy.int64 Werte, die nicht direkt als Parameterwerte für Ihre SQL-Anweisung verwendet werden können. Beispiel:

a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, a[1], 1, 1, 1)
crsr.execute(sql, params)

wird werfen

weil der dritte Parameterwert ein numpy.int64 ist Element aus Ihrem numpy-Array a . Konvertieren Sie diesen Wert mit int() wird das Problem vermeiden:

a = numpy.array([10, 11, 12], dtype=numpy.int64)
params = (1, 1, int(a[1]), 1, 1, 1)
crsr.execute(sql, params)

Übrigens, der Grund dafür, dass

sql = 'SET GLOBAL max_allowed_packet=50*1024*1024'
cursor.execute(sql)

nicht funktioniert hat, ist das max_allowed_packet ist eine MySQL-Einstellung, die für Microsoft SQL Server keine Bedeutung hat.