Il metodo executemany(sql, seq_of_parameters)
esegue la stessa istruzione SQL più volte per un insieme di parametri. Pertanto, il secondo argomento, seq_of_parameters
, deve essere una sequenza di tuple di parametri, non solo una singola tupla di parametri:
cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])
Se passi solo una tupla, il cursore assumerà che il primo elemento, x[a]
, è una tupla di parametri. Immagino sia una stringa di 50 caratteri e venga interpretata come una sequenza di 50 parametri, mentre la stringa SQL ne prevede solo 2.
Inoltre, nota che ho usato ?
come simbolo segnaposto invece di %s
, poiché quest'ultimo sembra non essere supportato da PyODBC, poiché ha segnalato che prevedeva 0 parametri.
Nel tuo caso, potresti voler usare execute()
metodo nel ciclo, poiché si desidera eseguire l'istruzione solo una volta per iterazione:
cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))