sql >> Database teknologi >  >> RDS >> Sqlserver

Ugyldig parametertype (numpy.int64) ved indsættelse af rækker med executemany()

Dit problem er ikke mængden af ​​data i sig selv , det er, at nogle af dine tuples indeholder numpy.int64 værdier, der ikke kan bruges direkte som parameterværdier for din SQL-sætning. For eksempel

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

vil kaste

fordi den tredje parameterværdi er en numpy.int64 element fra dit numpy-array a . Konvertering af denne værdi med int() vil undgå problemet:

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

Forresten, grunden til, at

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

virkede ikke, er det max_allowed_packet er en MySQL-indstilling, der ikke har nogen betydning for Microsoft SQL Server.



  1. Vedligeholdelse af orden i MySQL IN-forespørgsel

  2. SQL AS:Brug, eksempler og hvordan det kan gavne dig bedst

  3. Hvad er brugen af ​​SQL GROUP BY-erklæring?

  4. AWS Aurora MySQL serverløs:hvordan man opretter forbindelse fra MySQL Workbench