Metode executemany(sql, seq_of_parameters)
mengeksekusi pernyataan SQL yang sama beberapa kali untuk satu set parameter. Oleh karena itu, argumen kedua, seq_of_parameters
, harus berupa urutan tupel parameter, bukan hanya tupel parameter tunggal:
cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])
Jika Anda melewatkan hanya satu tupel, kursor akan menganggap bahwa item pertama, x[a]
, adalah tupel parameter. Saya kira itu adalah string 50 karakter dan ditafsirkan sebagai urutan 50 parameter, sedangkan string SQL hanya mengharapkan 2.
Selanjutnya, perhatikan bahwa saya menggunakan ?
sebagai simbol placeholder alih-alih %s
, karena yang terakhir tampaknya tidak didukung oleh PyODBC, karena dilaporkan bahwa ia mengharapkan 0 parameter.
Dalam kasus Anda, Anda mungkin ingin menggunakan execute()
metode dalam loop, karena Anda hanya ingin menjalankan pernyataan sekali per iterasi:
cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))