メソッドexecutemany(sql, seq_of_parameters)
パラメータのセットに対して同じSQLステートメントを複数回実行します。したがって、2番目の引数seq_of_parameters
、は、単一のパラメータータプルではなく、パラメータータプルのシーケンスである必要があります:
cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])
タプルを1つだけ渡すと、カーソルは最初の項目x[a]
を想定します。 、はパラメータのタプルです。これは50文字の文字列であり、50個のパラメーターのシーケンスとして解釈されると思いますが、SQL文字列は2のみを想定しています。
さらに、?
を使用したことに注意してください %s
の代わりにプレースホルダーシンボルとして 、後者は0個のパラメーターを予期していると報告されているため、PyODBCではサポートされていないようです。
あなたの場合、execute()
を使用することをお勧めします 反復ごとに1回だけステートメントを実行する必要があるため、ループ内のメソッド:
cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))