Mysql
 sql >> база данни >  >> RDS >> Mysql

(„SQL съдържа 0 маркера за параметри, но са предоставени 50 параметъра“, „HY000“) или TypeError:обектът „кортеж“ не може да бъде извикан

Методът executemany(sql, seq_of_parameters) изпълнява един и същ SQL израз многократно за набор от параметри. Следователно, вторият аргумент, seq_of_parameters , трябва да бъде поредица от кортежи с параметри, а не само един кортеж с параметри:

cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])

Ако подадете само един кортеж, курсорът ще приеме, че първият елемент, x[a] , е набор от параметри. Предполагам, че това е низ от 50 знака и се интерпретира като поредица от 50 параметъра, докато SQL низът очаква само 2.

Освен това забележете, че използвах ? като символ за заместител вместо %s , тъй като последното изглежда не се поддържа от PyODBC, тъй като съобщи, че очаква 0 параметри.

Във вашия случай може да искате да използвате execute() метод в цикъла, тъй като искате да изпълнявате оператора само веднъж на итерация:

cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се съхранява изпълним код в запис на таблица с помощта на SQL

  2. обектът на хибернация не е картографиран от версия 4.3.2

  3. SQL грешка:# 1064 при създаване на функция в plsql с помощта на mysql

  4. mysql concat низ с резултат

  5. Wordpress SQL:вземете категория на публикациите и тагове