Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nieprawidłowy typ parametru (numpy.int64) podczas wstawiania wierszy za pomocą executemany()

Twój problem nie dotyczy ilości danych per se , niektóre z twoich krotek zawierają numpy.int64 wartości, których nie można używać bezpośrednio jako wartości parametrów dla instrukcji SQL. Na przykład

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

rzuci

ponieważ trzecia wartość parametru to numpy.int64 element z Twojej tablicy numpy a . Konwertowanie tej wartości za pomocą int() uniknie problemu:

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

Przy okazji, powód, dla którego

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

nie zadziałało to, że max_allowed_packet to ustawienie MySQL, które nie ma żadnego znaczenia dla 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. Jak uzyskać dane z ostatnich 7 dni od aktualnej daty i godziny do ostatnich 7 dni na serwerze sql?

  2. Jak utworzyć bazę danych online z trybu przywracania w SQL Server?

  3. Instrukcja SQL Server RAISERROR z prostymi przykładami

  4. Jak zrobić rozróżnianie wielkości liter GROUP BY?

  5. Jak tworzyć widoki zmaterializowane w SQL Server?