sql >> Databáze >  >> RDS >> Sqlserver

Neplatný typ parametru (numpy.int64) při vkládání řádků pomocí executemany()

Váš problém není s objemem dat per se , některé z vašich n-tic obsahují numpy.int64 hodnoty, které nelze přímo použít jako hodnoty parametrů pro váš příkaz SQL. Například

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

bude házet

protože hodnota třetího parametru je numpy.int64 prvek z vašeho numpy pole a . Převeďte tuto hodnotu pomocí int() zabrání problému:

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

Mimochodem, důvod, proč

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

nefungovalo, je to max_allowed_packet je nastavení MySQL, které nemá pro Microsoft SQL Server žádný význam.



  1. Co dělá ::v PostgreSQL?

  2. MySQLdb.cursor.execute nemůže spouštět více dotazů

  3. Počet SQL - nefunguje

  4. NULL v MySQL (výkon a úložiště)