#python #sqlite
#питон #sqlite
Вопрос:
моя текущая строка кода выглядит следующим образом
c.execute("UPDATE " str(table), "SET " str(fieldchoice), " = " str(newvalue), "WHERE " str(tableid), "=" str(idchoice))
я пытаюсь получить значение в таблице, выбранной пользователем для обновления, выполняя определенные критерии, которые вводит пользователь, но когда я пытаюсь запустить ее, это выдает мне ошибку:
Exception has occurred: TypeError function takes at most 2 arguments (5 given) File "C:UsersleoauDocumentsActual NEA Project code.py", line 230, in updaterecord c.execute("UPDATE " str(table), "SET " str(fieldchoice), " = " str(newvalue), "WHERE " str(tableid), "=" str(idchoice)) File "C:UsersleoauDocumentsActual NEA Project code.py", line 38, in menu updaterecord() File "C:UsersleoauDocumentsActual NEA Project code.py", line 306, in lt;modulegt; menu()
любая помощь будет признательна!
Комментарии:
1. В чем заключается этот
c.execute
метод?2. Вам почти наверняка нужна одна строка, а не отдельные строковые аргументы, основанные на произвольных разрывах строк.
3. если это упражнение по построению динамических запросов, я мог бы увидеть, что это полезно, но если вы хотите, чтобы подобные вещи были реализованы проверенным способом: взгляните на SQLAlchemy.
Ответ №1:
Код передает 4 аргумента execute
, разделенных запятыми. Это будет выглядеть как допустимый sql, если его передать print
. Но это все равно 4 аргумента. Используйте
вместо ,
при создании строки запроса.