sql >> Database >  >> RDS >> Sqlserver

Ongeldig parametertype (numpy.int64) bij het invoegen van rijen met executemany()

Uw probleem zit niet in de hoeveelheid gegevens per se , het is dat sommige van je tuples numpy.int64 . bevatten waarden die niet direct kunnen worden gebruikt als parameterwaarden voor uw SQL-instructie. Bijvoorbeeld

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

zal gooien

omdat de derde parameterwaarde een numpy.int64 . is element uit je numpy array a . Die waarde converteren met int() zal het probleem vermijden:

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

Trouwens, de reden dat

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

niet werkte, is dat max_allowed_packet is een MySQL-instelling die geen enkele betekenis heeft voor Microsoft SQL Server.



  1. WHERE-component die waarden gebruikt die NULL kunnen zijn

  2. Hoe kan ik het maximale aantal MySQL-processen of -threads instellen?

  3. Waarom kan ik geen triggers maken voor objecten die eigendom zijn van SYS?

  4. Mysql - Hoe bestel ik resultaten door afwisselende (1,2,3, 1, 2, 3, 1, 2, 3,) rijen, is dat mogelijk?