Metoden executemany(sql, seq_of_parameters)
udfører den samme SQL-sætning flere gange for et sæt parametre. Derfor er det andet argument, seq_of_parameters
, skal være en sekvens af parameter tuples, ikke kun en enkelt parameter tuple:
cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])
Hvis du kun passerer én tupel, vil markøren antage, at det første element, x[a]
, er en række parametre. Jeg gætter på, at det er en streng på 50 tegn og bliver fortolket som en sekvens på 50 parametre, hvorimod SQL-strengen kun forventer 2.
Læg desuden mærke til, at jeg brugte ?
som pladsholdersymbol i stedet for %s
, da sidstnævnte tilsyneladende ikke understøttes af PyODBC, da den rapporterede, at den forventede 0 parametre.
I dit tilfælde vil du måske bruge execute()
metode i løkken, da du kun ønsker at køre sætningen én gang pr. iteration:
cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))