sql >> Database teknologi >  >> RDS >> Mysql

('SQL'en indeholder 0 parametermarkører, men 50 parametre blev leveret', 'HY000') eller TypeError:'tuple'-objekt kan ikke kaldes

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))



  1. Hvordan opdaterer jeg mysql database med ajax og php i innerhtml

  2. Deadlock ved hjælp af SELECT ... TIL OPDATERING i MySQL

  3. Brug af Passport med Sequelize og MySQL

  4. Strategier for en-til-mange type foreninger, hvor mange sideposter er i millioner