De methode executemany(sql, seq_of_parameters)
voert dezelfde SQL-instructie meerdere keren uit voor een set parameters. Daarom is het tweede argument, seq_of_parameters
, moet een reeks parameter-tupels zijn, niet slechts een enkele parameter-tupel:
cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])
Als u slechts één tupel doorgeeft, gaat de cursor ervan uit dat het eerste item, x[a]
, is een tupel van parameters. Ik denk dat het een reeks van 50 tekens is en wordt geïnterpreteerd als een reeks van 50 parameters, terwijl de SQL-reeks er slechts 2 verwacht.
Merk verder op dat ik ?
. heb gebruikt als het tijdelijke aanduiding-symbool in plaats van %s
, aangezien de laatste niet lijkt te worden ondersteund door PyODBC, omdat het meldde dat het 0 parameters verwachtte.
In jouw geval wil je misschien de execute()
. gebruiken methode in de lus, aangezien u de instructie slechts één keer per iteratie wilt uitvoeren:
cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))