Metoda executemany(sql, seq_of_parameters)
provede stejný příkaz SQL několikrát pro sadu parametrů. Proto druhý argument, seq_of_parameters
, musí být posloupnost n-tic parametrů, nikoli pouze n-tice s jedním parametrem:
cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])
Pokud předáte pouze jednu n-tici, kurzor bude předpokládat, že první položka, x[a]
, je n-tice parametrů. Myslím, že je to řetězec 50 znaků a je interpretován jako sekvence 50 parametrů, zatímco řetězec SQL očekává pouze 2.
Dále si všimněte, že jsem použil ?
jako zástupný symbol namísto %s
, protože se zdá, že PyODBC nepodporuje PyODBC, protože hlásil, že očekával 0 parametrů.
Ve vašem případě možná budete chtít použít execute()
metodu ve smyčce, protože chcete příkaz spustit pouze jednou za iteraci:
cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))