Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Невалиден тип параметър (numpy.int64) при вмъкване на редове с executemany()

Проблемът ви не е в обема на данните сам по себе си , това е, че някои от вашите кортежи съдържат numpy.int64 стойности, които не могат да се използват директно като стойности на параметри за вашия SQL израз. Например

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

ще хвърли

защото третата стойност на параметъра е numpy.int64 елемент от вашия numpy масив a . Преобразуване на тази стойност с int() ще избегне проблема:

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

Между другото, причината

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

не работи е този max_allowed_packet е настройка на MySQL, която няма никакво значение за Microsoft SQL Server.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Еквивалент на LIMIT и OFFSET за SQL Server?

  2. SQL Server SELECT, където всяка колона съдържа 'x'

  3. Само един израз може да бъде посочен в списъка за избор, когато подзаявката не е въведена с EXISTS

  4. MAX срещу Топ 1 - кое е по-добро?

  5. Как да задам стойност на променлива с помощта на 'execute' в t-sql?