sql >> Databasteknik >  >> RDS >> Sqlserver

Ogiltig parametertyp (numpy.int64) vid infogning av rader med executemany()

Ditt problem är inte mängden data i och för sig , det är att några av dina tupler innehåller numpy.int64 värden som inte kan användas direkt som parametervärden för din SQL-sats. Till exempel,

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

kommer att kasta

eftersom det tredje parametervärdet är en numpy.int64 element från din numpy array a . Konvertera det värdet med int() kommer att undvika problemet:

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

Förresten, anledningen till att

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

inte fungerade är att max_allowed_packet är en MySQL-inställning som inte har någon betydelse för Microsoft SQL Server.



  1. Generering av sekvenser i ordning

  2. PostgreSQL Column existerar inte men det gör den faktiskt

  3. SQL Hur ersätter man värden för select return?

  4. INFOGA flera poster med ruby ​​on rails aktiva post